sys: IRP_MJ_QUERY_VOLUME_INFORMATION: FileFsDeviceInformation: always return FILE_DEVICE_DISK to avoid problem with GetFileType failures

This commit is contained in:
Bill Zissimopoulos
2016-05-23 22:23:47 -07:00
parent 6be55aa515
commit aa75d412ac
4 changed files with 55 additions and 12 deletions

View File

@ -508,6 +508,7 @@ void getvolinfo_dotest(ULONG Flags, PWSTR Prefix, ULONG FileInfoTimeout)
ULARGE_INTEGER CallerFreeBytes;
ULARGE_INTEGER TotalBytes;
ULARGE_INTEGER FreeBytes;
HANDLE Handle;
StringCbPrintfW(FilePath, sizeof FilePath, L"%s%s\\",
Prefix ? L"" : L"\\\\?\\GLOBALROOT", Prefix ? Prefix : memfs_volumename(memfs));
@ -532,6 +533,21 @@ void getvolinfo_dotest(ULONG Flags, PWSTR Prefix, ULONG FileInfoTimeout)
Success = GetDiskFreeSpaceExW(FilePath, &CallerFreeBytes, &TotalBytes, &FreeBytes);
ASSERT(Success);
#if 0
UINT DriveType = GetDriveTypeW(FilePath);
ASSERT(
((0 == Prefix || L'\\' != Prefix[0]) && DRIVE_FIXED == DriveType) ||
((0 != Prefix && L'\\' == Prefix[0]) && DRIVE_REMOTE == DriveType));
#endif
Handle = CreateFileW(FilePath,
0, FILE_SHARE_READ | FILE_SHARE_WRITE, 0, OPEN_EXISTING,
FILE_FLAG_BACKUP_SEMANTICS, 0);
ASSERT(INVALID_HANDLE_VALUE != Handle);
DWORD FileType = GetFileType(Handle);
ASSERT(FILE_TYPE_DISK == FileType);
CloseHandle(Handle);
memfs_stop(memfs);
}