Alexandre Julliard : ntdll: Preserve the 2K block size returned for CDROMs.

Alexandre Julliard julliard at winehq.org
Wed Oct 8 12:48:08 CDT 2008


Module: wine
Branch: stable
Commit: bc58d24e9d5200a6569114b8061ee37fcd56fca5
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=bc58d24e9d5200a6569114b8061ee37fcd56fca5

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.
(cherry picked from commit 4d958a1cb3f79f5e6fe643542385840b497ff867)

---

 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 3c7fac5..2387fd8 100644
--- a/dlls/ntdll/file.c
+++ b/dlls/ntdll/file.c
@@ -2241,10 +2241,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