From 4d958a1cb3f79f5e6fe643542385840b497ff867 Mon Sep 17 00:00:00 2001 From: Alexandre Julliard Date: Mon, 6 Oct 2008 17:52:23 +0200 Subject: [PATCH] ntdll: Preserve the 2K block size returned for CDROMs. --- dlls/ntdll/file.c | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/dlls/ntdll/file.c b/dlls/ntdll/file.c index 3dee4eead17..52e75ab4795 100644 --- a/dlls/ntdll/file.c +++ b/dlls/ntdll/file.c @@ -2264,10 +2264,18 @@ NTSTATUS WINAPI NtQueryVolumeInformationFile( HANDLE handle, PIO_STATUS_BLOCK io } bsize = stfs.f_bsize; #endif - info->BytesPerSector = 512; - info->SectorsPerAllocationUnit = 8; - info->TotalAllocationUnits.QuadPart = bsize * stfs.f_blocks / (512 * 8); - info->AvailableAllocationUnits.QuadPart = bsize * stfs.f_bavail / (512 * 8); + if (bsize == 2048) /* assume CD-ROM */ + { + info->BytesPerSector = 2048; + info->SectorsPerAllocationUnit = 1; + } + else + { + info->BytesPerSector = 512; + info->SectorsPerAllocationUnit = 8; + } + info->TotalAllocationUnits.QuadPart = bsize * stfs.f_blocks / (info->BytesPerSector * info->SectorsPerAllocationUnit); + info->AvailableAllocationUnits.QuadPart = bsize * stfs.f_bavail / (info->BytesPerSector * info->SectorsPerAllocationUnit); io->Information = sizeof(*info); io->u.Status = STATUS_SUCCESS; } -- 2.11.4.GIT