Checking an empty CDROM drive

Paul Vriens paul.vriens.wine at gmail.com
Mon Jan 26 04:08:28 CST 2009


Paul Vriens wrote:
> 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)
> 
Oh, and the same is true (of course) for floppy drives (GetDriveType should 
always return DRIVE_REMOVABLE).

-- 
Cheers,

Paul.



More information about the wine-devel mailing list