ntdll: add stub implementation of IOCTL_STORAGE_GET_MEDIA_TYPES/IOCTL_STORAGE_GET_MEDIA_TYPES_EX

Austin English austinenglish at gmail.com
Sun May 30 20:34:31 CDT 2010


Thanks to Anastasius Focht for analysis, and Andrew Nguyen for
comments when writing.

Fixes http://bugs.winehq.org/show_bug.cgi?id=20935, a 1.2 target.

-- 
-Austin
-------------- next part --------------
diff --git a/dlls/ntdll/cdrom.c b/dlls/ntdll/cdrom.c
index 0737e6e..1ec03d8 100644
--- a/dlls/ntdll/cdrom.c
+++ b/dlls/ntdll/cdrom.c
@@ -176,6 +176,8 @@ X(IOCTL_STORAGE_CHECK_VERIFY)
 X(IOCTL_STORAGE_EJECTION_CONTROL)
 X(IOCTL_STORAGE_EJECT_MEDIA)
 X(IOCTL_STORAGE_GET_DEVICE_NUMBER)
+X(IOCTL_STORAGE_GET_MEDIA_TYPES)
+X(IOCTL_STORAGE_GET_MEDIA_TYPES_EX)
 X(IOCTL_STORAGE_LOAD_MEDIA)
 X(IOCTL_STORAGE_MEDIA_REMOVAL)
 X(IOCTL_STORAGE_RESET_DEVICE)
@@ -745,6 +747,18 @@ static NTSTATUS CDROM_GetDriveGeometry(int dev, int fd, DISK_GEOMETRY* dg)
   return ret;
 }
 
+/******************************************************************
+ *		CDROM_GetMediaType
+ *
+ */
+static NTSTATUS CDROM_GetMediaType(int dev, GET_MEDIA_TYPES* medtype)
+{
+    FIXME(": faking success\n");
+    medtype->DeviceType = FILE_DEVICE_CD_ROM;
+    medtype->MediaInfoCount = 0;
+    return STATUS_SUCCESS;
+}
+
 /**************************************************************************
  *                              CDROM_Reset                     [internal]
  */
@@ -2976,7 +2990,13 @@ NTSTATUS CDROM_DeviceIoControl(HANDLE hDevice,
         else status = CDROM_ControlEjection(fd, lpInBuffer);
         break;
 
-/* EPP     case IOCTL_STORAGE_GET_MEDIA_TYPES: */
+    case IOCTL_STORAGE_GET_MEDIA_TYPES:
+    case IOCTL_STORAGE_GET_MEDIA_TYPES_EX:
+        sz = sizeof(GET_MEDIA_TYPES);
+        if (lpInBuffer != NULL || nInBufferSize != 0) status = STATUS_INVALID_PARAMETER;
+        else if (nOutBufferSize < sz) status = STATUS_BUFFER_TOO_SMALL;
+        else status = CDROM_GetMediaType(dev, lpOutBuffer);
+        break;
 
     case IOCTL_STORAGE_GET_DEVICE_NUMBER:
         sz = sizeof(STORAGE_DEVICE_NUMBER);


More information about the wine-patches mailing list