diff --git a/src/common/platform/file_management.hpp b/src/common/platform/file_management.hpp index 95050c6a..528965f5 100644 --- a/src/common/platform/file_management.hpp +++ b/src/common/platform/file_management.hpp @@ -281,6 +281,15 @@ typedef struct _FILE_FS_SIZE_INFORMATION ULONG BytesPerSector; } FILE_FS_SIZE_INFORMATION, *PFILE_FS_SIZE_INFORMATION; +typedef struct _FILE_FS_VOLUME_INFORMATION +{ + LARGE_INTEGER VolumeCreationTime; + ULONG VolumeSerialNumber; + ULONG VolumeLabelLength; + BOOLEAN SupportsObjects; + char16_t VolumeLabel[1]; +} FILE_FS_VOLUME_INFORMATION, *PFILE_FS_VOLUME_INFORMATION; + typedef struct _FILE_FS_DEVICE_INFORMATION { DEVICE_TYPE DeviceType; diff --git a/src/windows-emulator/syscalls.cpp b/src/windows-emulator/syscalls.cpp index 3c2ece3a..c539d4c3 100644 --- a/src/windows-emulator/syscalls.cpp +++ b/src/windows-emulator/syscalls.cpp @@ -631,6 +631,14 @@ namespace return STATUS_SUCCESS; } + if (fs_information_class == FileFsVolumeInformation) + { + constexpr FILE_FS_VOLUME_INFORMATION volume_info{}; + c.emu.write_memory(fs_information, volume_info); + + return STATUS_SUCCESS; + } + c.win_emu.log.error("Unsupported fs info class: %X\n", fs_information_class); c.emu.stop(); return STATUS_NOT_SUPPORTED;