kernel32: Ignore FileIoPriorityHintInfo in SetFileInformationByHandle().
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=46130 Signed-off-by: Greg Smith <codedonewell@gmail.com> Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
parent
33de7fb7a8
commit
f4b07ee8ec
|
@ -1103,7 +1103,6 @@ BOOL WINAPI SetFileInformationByHandle( HANDLE file, FILE_INFO_BY_HANDLE_CLASS c
|
||||||
case FileStreamInfo:
|
case FileStreamInfo:
|
||||||
case FileIdBothDirectoryInfo:
|
case FileIdBothDirectoryInfo:
|
||||||
case FileIdBothDirectoryRestartInfo:
|
case FileIdBothDirectoryRestartInfo:
|
||||||
case FileIoPriorityHintInfo:
|
|
||||||
case FileFullDirectoryInfo:
|
case FileFullDirectoryInfo:
|
||||||
case FileFullDirectoryRestartInfo:
|
case FileFullDirectoryRestartInfo:
|
||||||
case FileStorageInfo:
|
case FileStorageInfo:
|
||||||
|
@ -1118,7 +1117,9 @@ BOOL WINAPI SetFileInformationByHandle( HANDLE file, FILE_INFO_BY_HANDLE_CLASS c
|
||||||
case FileDispositionInfo:
|
case FileDispositionInfo:
|
||||||
status = NtSetInformationFile( file, &io, info, size, FileDispositionInformation );
|
status = NtSetInformationFile( file, &io, info, size, FileDispositionInformation );
|
||||||
break;
|
break;
|
||||||
|
case FileIoPriorityHintInfo:
|
||||||
|
status = NtSetInformationFile( file, &io, info, size, FileIoPriorityHintInformation );
|
||||||
|
break;
|
||||||
case FileStandardInfo:
|
case FileStandardInfo:
|
||||||
case FileCompressionInfo:
|
case FileCompressionInfo:
|
||||||
case FileAttributeTagInfo:
|
case FileAttributeTagInfo:
|
||||||
|
|
|
@ -4914,6 +4914,7 @@ static void test_SetFileInformationByHandle(void)
|
||||||
FILE_STANDARD_INFO stdinfo = { {{0}},{{0}},0,FALSE,FALSE };
|
FILE_STANDARD_INFO stdinfo = { {{0}},{{0}},0,FALSE,FALSE };
|
||||||
FILE_COMPRESSION_INFO compressinfo;
|
FILE_COMPRESSION_INFO compressinfo;
|
||||||
FILE_DISPOSITION_INFO dispinfo;
|
FILE_DISPOSITION_INFO dispinfo;
|
||||||
|
DECLSPEC_ALIGN(8) FILE_IO_PRIORITY_HINT_INFO hintinfo;
|
||||||
char tempFileName[MAX_PATH];
|
char tempFileName[MAX_PATH];
|
||||||
char tempPath[MAX_PATH];
|
char tempPath[MAX_PATH];
|
||||||
HANDLE file;
|
HANDLE file;
|
||||||
|
@ -4950,6 +4951,28 @@ static void test_SetFileInformationByHandle(void)
|
||||||
ret = pSetFileInformationByHandle(file, FileAttributeTagInfo, &fileattrinfo, sizeof(fileattrinfo));
|
ret = pSetFileInformationByHandle(file, FileAttributeTagInfo, &fileattrinfo, sizeof(fileattrinfo));
|
||||||
ok(!ret && GetLastError() == ERROR_INVALID_PARAMETER, "got %d, error %d\n", ret, GetLastError());
|
ok(!ret && GetLastError() == ERROR_INVALID_PARAMETER, "got %d, error %d\n", ret, GetLastError());
|
||||||
|
|
||||||
|
SetLastError(0xdeadbeef);
|
||||||
|
hintinfo.PriorityHint = MaximumIoPriorityHintType;
|
||||||
|
ret = pSetFileInformationByHandle(file, FileIoPriorityHintInfo, &hintinfo, sizeof(hintinfo));
|
||||||
|
ok(!ret && GetLastError() == ERROR_INVALID_PARAMETER, "got %d, error %d\n", ret, GetLastError());
|
||||||
|
|
||||||
|
hintinfo.PriorityHint = IoPriorityHintNormal;
|
||||||
|
ret = pSetFileInformationByHandle(file, FileIoPriorityHintInfo, &hintinfo, sizeof(hintinfo));
|
||||||
|
ok(ret, "setting FileIoPriorityHintInfo got %d, error %d\n", ret, GetLastError());
|
||||||
|
|
||||||
|
hintinfo.PriorityHint = IoPriorityHintVeryLow;
|
||||||
|
ret = pSetFileInformationByHandle(file, FileIoPriorityHintInfo, &hintinfo, sizeof(hintinfo));
|
||||||
|
ok(ret, "setting FileIoPriorityHintInfo got %d, error %d\n", ret, GetLastError());
|
||||||
|
|
||||||
|
SetLastError(0xdeadbeef);
|
||||||
|
ret = pSetFileInformationByHandle(file, FileIoPriorityHintInfo, &hintinfo, sizeof(hintinfo) - 1);
|
||||||
|
ok(!ret && GetLastError() == ERROR_BAD_LENGTH, "got %d, error %d\n", ret, GetLastError());
|
||||||
|
|
||||||
|
SetLastError(0xdeadbeef);
|
||||||
|
hintinfo.PriorityHint = IoPriorityHintVeryLow - 1;
|
||||||
|
ret = pSetFileInformationByHandle(file, FileIoPriorityHintInfo, &hintinfo, sizeof(hintinfo));
|
||||||
|
ok(!ret && GetLastError() == ERROR_INVALID_PARAMETER, "got %d, error %d\n", ret, GetLastError());
|
||||||
|
|
||||||
memset(&protinfo, 0, sizeof(protinfo));
|
memset(&protinfo, 0, sizeof(protinfo));
|
||||||
protinfo.StructureVersion = 1;
|
protinfo.StructureVersion = 1;
|
||||||
protinfo.StructureSize = sizeof(protinfo);
|
protinfo.StructureSize = sizeof(protinfo);
|
||||||
|
|
|
@ -2671,6 +2671,18 @@ NTSTATUS WINAPI NtSetInformationFile(HANDLE handle, PIO_STATUS_BLOCK io,
|
||||||
io->u.Status = STATUS_INFO_LENGTH_MISMATCH;
|
io->u.Status = STATUS_INFO_LENGTH_MISMATCH;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case FileIoPriorityHintInformation:
|
||||||
|
if (len >= sizeof(FILE_IO_PRIORITY_HINT_INFO))
|
||||||
|
{
|
||||||
|
FILE_IO_PRIORITY_HINT_INFO *info = ptr;
|
||||||
|
if (info->PriorityHint < MaximumIoPriorityHintType)
|
||||||
|
TRACE( "ignoring FileIoPriorityHintInformation %u\n", info->PriorityHint );
|
||||||
|
else
|
||||||
|
io->u.Status = STATUS_INVALID_PARAMETER;
|
||||||
|
}
|
||||||
|
else io->u.Status = STATUS_INFO_LENGTH_MISMATCH;
|
||||||
|
break;
|
||||||
|
|
||||||
case FileAllInformation:
|
case FileAllInformation:
|
||||||
io->u.Status = STATUS_INVALID_INFO_CLASS;
|
io->u.Status = STATUS_INVALID_INFO_CLASS;
|
||||||
break;
|
break;
|
||||||
|
|
Loading…
Reference in New Issue