mountmgr.sys: Fix values returned for IOCTL_STORAGE_GET_DEVICE_NUMBER on emulated disks.
This commit is contained in:
parent
5b71d645f0
commit
4003457ff3
|
@ -142,17 +142,17 @@ static NTSTATUS create_disk_device( DRIVER_OBJECT *driver, DWORD type, DEVICE_OB
|
||||||
case DRIVE_REMOVABLE:
|
case DRIVE_REMOVABLE:
|
||||||
info->devnum.DeviceType = FILE_DEVICE_DISK;
|
info->devnum.DeviceType = FILE_DEVICE_DISK;
|
||||||
info->devnum.DeviceNumber = i;
|
info->devnum.DeviceNumber = i;
|
||||||
info->devnum.PartitionNumber = 0;
|
info->devnum.PartitionNumber = ~0u;
|
||||||
break;
|
break;
|
||||||
case DRIVE_CDROM:
|
case DRIVE_CDROM:
|
||||||
info->devnum.DeviceType = FILE_DEVICE_CD_ROM;
|
info->devnum.DeviceType = FILE_DEVICE_CD_ROM;
|
||||||
info->devnum.DeviceNumber = i;
|
info->devnum.DeviceNumber = i;
|
||||||
info->devnum.PartitionNumber = 0;
|
info->devnum.PartitionNumber = ~0u;
|
||||||
break;
|
break;
|
||||||
case DRIVE_FIXED:
|
case DRIVE_FIXED:
|
||||||
default: /* FIXME */
|
default: /* FIXME */
|
||||||
info->devnum.DeviceType = FILE_DEVICE_DISK;
|
info->devnum.DeviceType = FILE_DEVICE_DISK;
|
||||||
info->devnum.DeviceNumber = 1;
|
info->devnum.DeviceNumber = 0;
|
||||||
info->devnum.PartitionNumber = i;
|
info->devnum.PartitionNumber = i;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -441,6 +441,7 @@ static NTSTATUS WINAPI harddisk_driver_entry( DRIVER_OBJECT *driver, UNICODE_STR
|
||||||
UNICODE_STRING nameW, linkW;
|
UNICODE_STRING nameW, linkW;
|
||||||
DEVICE_OBJECT *device;
|
DEVICE_OBJECT *device;
|
||||||
NTSTATUS status;
|
NTSTATUS status;
|
||||||
|
struct disk_device_info *info;
|
||||||
|
|
||||||
driver->MajorFunction[IRP_MJ_DEVICE_CONTROL] = harddisk_ioctl;
|
driver->MajorFunction[IRP_MJ_DEVICE_CONTROL] = harddisk_ioctl;
|
||||||
|
|
||||||
|
@ -449,13 +450,18 @@ static NTSTATUS WINAPI harddisk_driver_entry( DRIVER_OBJECT *driver, UNICODE_STR
|
||||||
|
|
||||||
RtlInitUnicodeString( &nameW, harddisk0W );
|
RtlInitUnicodeString( &nameW, harddisk0W );
|
||||||
RtlInitUnicodeString( &linkW, physdrive0W );
|
RtlInitUnicodeString( &linkW, physdrive0W );
|
||||||
if (!(status = IoCreateDevice( driver, 0, &nameW, 0, 0, FALSE, &device )))
|
if (!(status = IoCreateDevice( driver, sizeof(*info), &nameW, 0, 0, FALSE, &device )))
|
||||||
status = IoCreateSymbolicLink( &linkW, &nameW );
|
status = IoCreateSymbolicLink( &linkW, &nameW );
|
||||||
if (status)
|
if (status)
|
||||||
{
|
{
|
||||||
FIXME( "failed to create device error %x\n", status );
|
FIXME( "failed to create device error %x\n", status );
|
||||||
return status;
|
return status;
|
||||||
}
|
}
|
||||||
|
info = device->DeviceExtension;
|
||||||
|
info->name = nameW;
|
||||||
|
info->devnum.DeviceType = FILE_DEVICE_DISK;
|
||||||
|
info->devnum.DeviceNumber = 0;
|
||||||
|
info->devnum.PartitionNumber = 0;
|
||||||
|
|
||||||
create_drive_mount_points( driver );
|
create_drive_mount_points( driver );
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue