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