Charles Davis : mountmgr: Use the media kind to fill in the device type field on Mac OS.
Alexandre Julliard
julliard at winehq.org
Tue Feb 15 11:29:27 CST 2011
Module: wine
Branch: master
Commit: 9a1fb63840e47c7b98c91f945084100212546b33
URL: http://source.winehq.org/git/wine.git/?a=commit;h=9a1fb63840e47c7b98c91f945084100212546b33
Author: Charles Davis <cdavis at mymail.mines.edu>
Date: Tue Feb 8 15:12:54 2011 -0700
mountmgr: Use the media kind to fill in the device type field on Mac OS.
---
dlls/mountmgr.sys/device.c | 7 +++++++
dlls/mountmgr.sys/diskarb.c | 10 +++++++---
dlls/mountmgr.sys/mountmgr.c | 1 +
dlls/mountmgr.sys/mountmgr.h | 1 +
4 files changed, 16 insertions(+), 3 deletions(-)
diff --git a/dlls/mountmgr.sys/device.c b/dlls/mountmgr.sys/device.c
index 702f3ff..c4b4b72 100644
--- a/dlls/mountmgr.sys/device.c
+++ b/dlls/mountmgr.sys/device.c
@@ -219,6 +219,7 @@ static NTSTATUS create_disk_device( enum device_type type, struct disk_device **
format = floppyW;
break;
case DEVICE_CDROM:
+ case DEVICE_DVD:
format = cdromW;
break;
case DEVICE_RAMDISK:
@@ -258,6 +259,11 @@ static NTSTATUS create_disk_device( enum device_type type, struct disk_device **
device->devnum.DeviceNumber = i;
device->devnum.PartitionNumber = ~0u;
break;
+ case DEVICE_DVD:
+ device->devnum.DeviceType = FILE_DEVICE_DVD;
+ device->devnum.DeviceNumber = i;
+ device->devnum.PartitionNumber = ~0u;
+ break;
case DEVICE_UNKNOWN:
case DEVICE_HARDDISK:
case DEVICE_NETWORK: /* FIXME */
@@ -541,6 +547,7 @@ static int add_drive( const char *device, enum device_type type )
last = 2;
break;
case DEVICE_CDROM:
+ case DEVICE_DVD:
first = 3;
last = 26;
break;
diff --git a/dlls/mountmgr.sys/diskarb.c b/dlls/mountmgr.sys/diskarb.c
index 0c188ff..d3912ca 100644
--- a/dlls/mountmgr.sys/diskarb.c
+++ b/dlls/mountmgr.sys/diskarb.c
@@ -64,11 +64,15 @@ static void appeared_callback( DADiskRef disk, void *context )
else
mount_point[0] = 0;
- if ((ref = CFDictionaryGetValue( dict, CFSTR("DAVolumeKind") )))
+ if ((ref = CFDictionaryGetValue( dict, CFSTR("DAMediaKind") )))
{
- if (!CFStringCompare( ref, CFSTR("cd9660"), 0 ) ||
- !CFStringCompare( ref, CFSTR("udf"), 0 ))
+ if (!CFStringCompare( ref, CFSTR("IOCDMedia"), 0 ))
type = DEVICE_CDROM;
+ if (!CFStringCompare( ref, CFSTR("IODVDMedia"), 0 ) ||
+ !CFStringCompare( ref, CFSTR("IOBDMedia"), 0 ))
+ type = DEVICE_DVD;
+ if (!CFStringCompare( ref, CFSTR("IOMedia"), 0 ))
+ type = DEVICE_HARDDISK;
}
TRACE( "got mount notification for '%s' on '%s' uuid %s\n",
diff --git a/dlls/mountmgr.sys/mountmgr.c b/dlls/mountmgr.sys/mountmgr.c
index 87d9007..4e9900f 100644
--- a/dlls/mountmgr.sys/mountmgr.c
+++ b/dlls/mountmgr.sys/mountmgr.c
@@ -293,6 +293,7 @@ static NTSTATUS query_unix_drive( const void *in_buff, SIZE_T insize,
case DEVICE_HARDDISK_VOL: type = DRIVE_FIXED; break;
case DEVICE_FLOPPY: type = DRIVE_REMOVABLE; break;
case DEVICE_CDROM: type = DRIVE_CDROM; break;
+ case DEVICE_DVD: type = DRIVE_CDROM; break;
case DEVICE_NETWORK: type = DRIVE_REMOTE; break;
case DEVICE_RAMDISK: type = DRIVE_RAMDISK; break;
}
diff --git a/dlls/mountmgr.sys/mountmgr.h b/dlls/mountmgr.sys/mountmgr.h
index 3d57ba1..da1312c 100644
--- a/dlls/mountmgr.sys/mountmgr.h
+++ b/dlls/mountmgr.sys/mountmgr.h
@@ -47,6 +47,7 @@ enum device_type
DEVICE_HARDDISK_VOL,
DEVICE_FLOPPY,
DEVICE_CDROM,
+ DEVICE_DVD,
DEVICE_NETWORK,
DEVICE_RAMDISK
};
More information about the wine-cvs
mailing list