Checking an empty CDROM drive

Paul Vriens paul.vriens.wine at gmail.com
Mon Jan 26 03:59:18 CST 2009


Hi,

I'm trying to come up with some test to show that GetDriveType returns 
DRIVE_CDROM regardless whether there is or isn't a CD mounted.

I have the following:

diff --git a/dlls/kernel32/tests/drive.c b/dlls/kernel32/tests/drive.c
index a94cbdf..53b0262 100644
--- a/dlls/kernel32/tests/drive.c
+++ b/dlls/kernel32/tests/drive.c
@@ -46,6 +46,24 @@ static void test_GetDriveTypeA(void)
                 "GetDriveTypeA should return DRIVE_NO_ROOT_DIR for inexistent 
drive %c: but not %u\n",
                 drive[0], type);

+        /* Check if type is still DRIVE_CDROM even when no CD is mounted */
+        if (type == 5)
+        {
+            DWORD attrs;
+
+            SetLastError(0xdeadbeef);
+            attrs = GetFileAttributesA(drive);
+            if (attrs == INVALID_FILE_ATTRIBUTES)
+            {
+                trace("Unmounted CDROM with type DRIVE_CDROM\n");
+                ok(GetLastError() == ERROR_NOT_READY,
+                   "Expected ERROR_NOT_READY for an unmounted CDROM\n");
+            }
+            else
+               ok((attrs & FILE_ATTRIBUTE_DIRECTORY) == FILE_ATTRIBUTE_DIRECTORY,
+                  "Expected FILE_ATTRIBUTE_DIRECTORY for a mounted CDROM\n");
+        }
+
          logical_drives >>= 1;
      }
  }

The idea however is to show that Wine is wrong in returning DRIVE_NO_ROOT_DIR 
for an unmounted CD. The test above of course doesn't show that, it only proves 
that Windows does it this way.

(All is related to bug http://bugs.winehq.org/show_bug.cgi?id=16592)

-- 
Cheers,

Paul.



More information about the wine-devel mailing list