Alexandre Julliard : ntdll: Preserve the 2K block size returned for CDROMs.
Alexandre Julliard
julliard at winehq.org
Tue Oct 7 08:53:39 CDT 2008
Module: wine
Branch: master
Commit: 4d958a1cb3f79f5e6fe643542385840b497ff867
URL: http://source.winehq.org/git/wine.git/?a=commit;h=4d958a1cb3f79f5e6fe643542385840b497ff867
Author: Alexandre Julliard <julliard at winehq.org>
Date: Mon Oct 6 17:52:23 2008 +0200
ntdll: Preserve the 2K block size returned for CDROMs.
---
dlls/ntdll/file.c | 16 ++++++++++++----
1 files changed, 12 insertions(+), 4 deletions(-)
diff --git a/dlls/ntdll/file.c b/dlls/ntdll/file.c
index 3dee4ee..52e75ab 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;
}
More information about the wine-cvs
mailing list