mirror of
https://github.com/reactos/reactos.git
synced 2025-08-05 12:24:21 +00:00
[RAMDISK]
- Whitespace fixes, - Add braces for long "case blah: ..." code blocks, - Add more informational messages when a feature is unimplemented (some control codes and cases happening when using ramdisk with bootcd). svn path=/trunk/; revision=66013
This commit is contained in:
parent
057211e26a
commit
f3dfb65738
1 changed files with 334 additions and 361 deletions
|
@ -1047,7 +1047,7 @@ RamdiskWorkerThread(IN PDEVICE_OBJECT DeviceObject,
|
||||||
// Device control
|
// Device control
|
||||||
//
|
//
|
||||||
case IRP_MJ_DEVICE_CONTROL:
|
case IRP_MJ_DEVICE_CONTROL:
|
||||||
|
{
|
||||||
//
|
//
|
||||||
// Let's take a look at the IOCTL
|
// Let's take a look at the IOCTL
|
||||||
//
|
//
|
||||||
|
@ -1057,30 +1057,31 @@ RamdiskWorkerThread(IN PDEVICE_OBJECT DeviceObject,
|
||||||
// Ramdisk create request
|
// Ramdisk create request
|
||||||
//
|
//
|
||||||
case FSCTL_CREATE_RAM_DISK:
|
case FSCTL_CREATE_RAM_DISK:
|
||||||
|
{
|
||||||
//
|
//
|
||||||
// This time we'll do it for real
|
// This time we'll do it for real
|
||||||
//
|
//
|
||||||
Status = RamdiskCreateRamdisk(DeviceObject, Irp, FALSE);
|
Status = RamdiskCreateRamdisk(DeviceObject, Irp, FALSE);
|
||||||
break;
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
case IOCTL_DISK_SET_PARTITION_INFO:
|
case IOCTL_DISK_SET_PARTITION_INFO:
|
||||||
|
{
|
||||||
Status = RamdiskSetPartitionInfo(Irp, (PRAMDISK_DRIVE_EXTENSION)DeviceExtension);
|
Status = RamdiskSetPartitionInfo(Irp, (PRAMDISK_DRIVE_EXTENSION)DeviceExtension);
|
||||||
break;
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
case IOCTL_DISK_GET_DRIVE_LAYOUT:
|
case IOCTL_DISK_GET_DRIVE_LAYOUT:
|
||||||
|
|
||||||
UNIMPLEMENTED_DBGBREAK("Get drive layout request\n");
|
UNIMPLEMENTED_DBGBREAK("Get drive layout request\n");
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case IOCTL_DISK_GET_PARTITION_INFO:
|
case IOCTL_DISK_GET_PARTITION_INFO:
|
||||||
|
{
|
||||||
Status = RamdiskGetPartitionInfo(Irp, (PRAMDISK_DRIVE_EXTENSION)DeviceExtension);
|
Status = RamdiskGetPartitionInfo(Irp, (PRAMDISK_DRIVE_EXTENSION)DeviceExtension);
|
||||||
break;
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
default:
|
default:
|
||||||
|
|
||||||
UNIMPLEMENTED_DBGBREAK("Invalid request\n");
|
UNIMPLEMENTED_DBGBREAK("Invalid request\n");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -1089,13 +1090,13 @@ RamdiskWorkerThread(IN PDEVICE_OBJECT DeviceObject,
|
||||||
// We're here
|
// We're here
|
||||||
//
|
//
|
||||||
break;
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
// Read or write request
|
// Read or write request
|
||||||
//
|
//
|
||||||
case IRP_MJ_READ:
|
case IRP_MJ_READ:
|
||||||
case IRP_MJ_WRITE:
|
case IRP_MJ_WRITE:
|
||||||
|
|
||||||
UNIMPLEMENTED_DBGBREAK("Read/Write request\n");
|
UNIMPLEMENTED_DBGBREAK("Read/Write request\n");
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
@ -1103,7 +1104,6 @@ RamdiskWorkerThread(IN PDEVICE_OBJECT DeviceObject,
|
||||||
// Internal request (SCSI?)
|
// Internal request (SCSI?)
|
||||||
//
|
//
|
||||||
case IRP_MJ_INTERNAL_DEVICE_CONTROL:
|
case IRP_MJ_INTERNAL_DEVICE_CONTROL:
|
||||||
|
|
||||||
UNIMPLEMENTED_DBGBREAK("SCSI request\n");
|
UNIMPLEMENTED_DBGBREAK("SCSI request\n");
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
@ -1111,7 +1111,6 @@ RamdiskWorkerThread(IN PDEVICE_OBJECT DeviceObject,
|
||||||
// Flush request
|
// Flush request
|
||||||
//
|
//
|
||||||
case IRP_MJ_FLUSH_BUFFERS:
|
case IRP_MJ_FLUSH_BUFFERS:
|
||||||
|
|
||||||
UNIMPLEMENTED_DBGBREAK("Flush request\n");
|
UNIMPLEMENTED_DBGBREAK("Flush request\n");
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
@ -1119,7 +1118,6 @@ RamdiskWorkerThread(IN PDEVICE_OBJECT DeviceObject,
|
||||||
// Anything else
|
// Anything else
|
||||||
//
|
//
|
||||||
default:
|
default:
|
||||||
|
|
||||||
UNIMPLEMENTED_DBGBREAK("Invalid request: %lx\n", IoStackLocation->MajorFunction);
|
UNIMPLEMENTED_DBGBREAK("Invalid request: %lx\n", IoStackLocation->MajorFunction);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -1461,20 +1459,22 @@ RamdiskDeviceControl(IN PDEVICE_OBJECT DeviceObject,
|
||||||
// Request to create a ramdisk
|
// Request to create a ramdisk
|
||||||
//
|
//
|
||||||
case FSCTL_CREATE_RAM_DISK:
|
case FSCTL_CREATE_RAM_DISK:
|
||||||
|
{
|
||||||
//
|
//
|
||||||
// Do it
|
// Do it
|
||||||
//
|
//
|
||||||
Status = RamdiskCreateRamdisk(DeviceObject, Irp, TRUE);
|
Status = RamdiskCreateRamdisk(DeviceObject, Irp, TRUE);
|
||||||
if (!NT_SUCCESS(Status)) goto CompleteRequest;
|
if (!NT_SUCCESS(Status)) goto CompleteRequest;
|
||||||
break;
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
default:
|
default:
|
||||||
|
{
|
||||||
//
|
//
|
||||||
// We don't handle anything else yet
|
// We don't handle anything else yet
|
||||||
//
|
//
|
||||||
UNIMPLEMENTED_DBGBREAK();
|
UNIMPLEMENTED_DBGBREAK("IOCTL: %lx\n", IoStackLocation->Parameters.DeviceIoControl.IoControlCode);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -1488,18 +1488,19 @@ RamdiskDeviceControl(IN PDEVICE_OBJECT DeviceObject,
|
||||||
case IOCTL_STORAGE_CHECK_VERIFY:
|
case IOCTL_STORAGE_CHECK_VERIFY:
|
||||||
case IOCTL_STORAGE_CHECK_VERIFY2:
|
case IOCTL_STORAGE_CHECK_VERIFY2:
|
||||||
case IOCTL_CDROM_CHECK_VERIFY:
|
case IOCTL_CDROM_CHECK_VERIFY:
|
||||||
|
{
|
||||||
//
|
//
|
||||||
// Just pretend it's OK, don't do more
|
// Just pretend it's OK, don't do more
|
||||||
//
|
//
|
||||||
Status = STATUS_SUCCESS;
|
Status = STATUS_SUCCESS;
|
||||||
break;
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
case IOCTL_STORAGE_GET_MEDIA_TYPES:
|
case IOCTL_STORAGE_GET_MEDIA_TYPES:
|
||||||
case IOCTL_DISK_GET_MEDIA_TYPES:
|
case IOCTL_DISK_GET_MEDIA_TYPES:
|
||||||
case IOCTL_DISK_GET_DRIVE_GEOMETRY:
|
case IOCTL_DISK_GET_DRIVE_GEOMETRY:
|
||||||
case IOCTL_CDROM_GET_DRIVE_GEOMETRY:
|
case IOCTL_CDROM_GET_DRIVE_GEOMETRY:
|
||||||
|
{
|
||||||
//
|
//
|
||||||
// Validate the length
|
// Validate the length
|
||||||
//
|
//
|
||||||
|
@ -1530,9 +1531,10 @@ RamdiskDeviceControl(IN PDEVICE_OBJECT DeviceObject,
|
||||||
Status = STATUS_SUCCESS;
|
Status = STATUS_SUCCESS;
|
||||||
Information = sizeof(DISK_GEOMETRY);
|
Information = sizeof(DISK_GEOMETRY);
|
||||||
break;
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
case IOCTL_CDROM_READ_TOC:
|
case IOCTL_CDROM_READ_TOC:
|
||||||
|
{
|
||||||
//
|
//
|
||||||
// Validate the length
|
// Validate the length
|
||||||
//
|
//
|
||||||
|
@ -1569,14 +1571,16 @@ RamdiskDeviceControl(IN PDEVICE_OBJECT DeviceObject,
|
||||||
Status = STATUS_SUCCESS;
|
Status = STATUS_SUCCESS;
|
||||||
Information = RAMDISK_TOC_SIZE;
|
Information = RAMDISK_TOC_SIZE;
|
||||||
break;
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
case IOCTL_DISK_SET_PARTITION_INFO:
|
case IOCTL_DISK_SET_PARTITION_INFO:
|
||||||
|
{
|
||||||
Status = RamdiskSetPartitionInfo(Irp, DriveExtension);
|
Status = RamdiskSetPartitionInfo(Irp, DriveExtension);
|
||||||
break;
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
case IOCTL_DISK_GET_PARTITION_INFO:
|
case IOCTL_DISK_GET_PARTITION_INFO:
|
||||||
|
{
|
||||||
//
|
//
|
||||||
// Validate the length
|
// Validate the length
|
||||||
//
|
//
|
||||||
|
@ -1613,70 +1617,33 @@ RamdiskDeviceControl(IN PDEVICE_OBJECT DeviceObject,
|
||||||
//
|
//
|
||||||
Information = Irp->IoStatus.Information;
|
Information = Irp->IoStatus.Information;
|
||||||
break;
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
case IOCTL_DISK_GET_DRIVE_LAYOUT:
|
case IOCTL_DISK_GET_DRIVE_LAYOUT:
|
||||||
|
|
||||||
UNIMPLEMENTED_DBGBREAK();
|
|
||||||
break;
|
|
||||||
|
|
||||||
case IOCTL_DISK_GET_LENGTH_INFO:
|
case IOCTL_DISK_GET_LENGTH_INFO:
|
||||||
|
|
||||||
UNIMPLEMENTED_DBGBREAK();
|
|
||||||
break;
|
|
||||||
|
|
||||||
case IOCTL_DISK_IS_WRITABLE:
|
case IOCTL_DISK_IS_WRITABLE:
|
||||||
|
|
||||||
UNIMPLEMENTED_DBGBREAK();
|
|
||||||
break;
|
|
||||||
|
|
||||||
case IOCTL_SCSI_MINIPORT:
|
case IOCTL_SCSI_MINIPORT:
|
||||||
|
|
||||||
UNIMPLEMENTED_DBGBREAK();
|
|
||||||
break;
|
|
||||||
|
|
||||||
case IOCTL_STORAGE_QUERY_PROPERTY:
|
case IOCTL_STORAGE_QUERY_PROPERTY:
|
||||||
|
|
||||||
UNIMPLEMENTED_DBGBREAK();
|
|
||||||
break;
|
|
||||||
|
|
||||||
case IOCTL_MOUNTDEV_QUERY_UNIQUE_ID:
|
case IOCTL_MOUNTDEV_QUERY_UNIQUE_ID:
|
||||||
|
|
||||||
UNIMPLEMENTED_DBGBREAK();
|
|
||||||
break;
|
|
||||||
|
|
||||||
case IOCTL_MOUNTDEV_QUERY_STABLE_GUID:
|
case IOCTL_MOUNTDEV_QUERY_STABLE_GUID:
|
||||||
|
|
||||||
UNIMPLEMENTED_DBGBREAK();
|
|
||||||
break;
|
|
||||||
|
|
||||||
case IOCTL_VOLUME_GET_VOLUME_DISK_EXTENTS:
|
case IOCTL_VOLUME_GET_VOLUME_DISK_EXTENTS:
|
||||||
|
|
||||||
UNIMPLEMENTED_DBGBREAK();
|
|
||||||
break;
|
|
||||||
|
|
||||||
case IOCTL_VOLUME_SET_GPT_ATTRIBUTES:
|
case IOCTL_VOLUME_SET_GPT_ATTRIBUTES:
|
||||||
|
|
||||||
UNIMPLEMENTED_DBGBREAK();
|
|
||||||
break;
|
|
||||||
|
|
||||||
case IOCTL_VOLUME_GET_GPT_ATTRIBUTES:
|
case IOCTL_VOLUME_GET_GPT_ATTRIBUTES:
|
||||||
|
|
||||||
UNIMPLEMENTED_DBGBREAK();
|
|
||||||
break;
|
|
||||||
|
|
||||||
case IOCTL_VOLUME_OFFLINE:
|
case IOCTL_VOLUME_OFFLINE:
|
||||||
|
{
|
||||||
UNIMPLEMENTED_DBGBREAK();
|
UNIMPLEMENTED_DBGBREAK("IOCTL: %lx\n", IoStackLocation->Parameters.DeviceIoControl.IoControlCode);
|
||||||
break;
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
default:
|
default:
|
||||||
|
{
|
||||||
//
|
//
|
||||||
// Drive code not emulated
|
// Drive code not emulated
|
||||||
//
|
//
|
||||||
DPRINT1("IOCTL: %lx\n", IoStackLocation->Parameters.DeviceIoControl.IoControlCode);
|
DPRINT1("IOCTL: %lx\n", IoStackLocation->Parameters.DeviceIoControl.IoControlCode);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
// If requests drop down here, we just return them complete them
|
// If requests drop down here, we just return them complete them
|
||||||
|
@ -2082,7 +2049,7 @@ RamdiskQueryId(IN PRAMDISK_DRIVE_EXTENSION DriveExtension,
|
||||||
switch (IoStackLocation->Parameters.QueryId.IdType)
|
switch (IoStackLocation->Parameters.QueryId.IdType)
|
||||||
{
|
{
|
||||||
case BusQueryDeviceID:
|
case BusQueryDeviceID:
|
||||||
|
{
|
||||||
//
|
//
|
||||||
// Allocate a buffer long enough to receive Ramdisk\RamDisk in any case
|
// Allocate a buffer long enough to receive Ramdisk\RamDisk in any case
|
||||||
// In case we don't have RAMDISK_REGISTRY_DISK, we then need two more
|
// In case we don't have RAMDISK_REGISTRY_DISK, we then need two more
|
||||||
|
@ -2107,9 +2074,10 @@ RamdiskQueryId(IN PRAMDISK_DRIVE_EXTENSION DriveExtension,
|
||||||
}
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
case BusQueryHardwareIDs:
|
case BusQueryHardwareIDs:
|
||||||
|
{
|
||||||
//
|
//
|
||||||
// Allocate a buffer long enough to receive Ramdisk\RamDisk in any case
|
// Allocate a buffer long enough to receive Ramdisk\RamDisk in any case
|
||||||
// In case we don't have RAMDISK_REGISTRY_DISK, we then need two more
|
// In case we don't have RAMDISK_REGISTRY_DISK, we then need two more
|
||||||
|
@ -2138,9 +2106,10 @@ RamdiskQueryId(IN PRAMDISK_DRIVE_EXTENSION DriveExtension,
|
||||||
OutputString[(StringLength / sizeof(WCHAR)) - 1] = UNICODE_NULL;
|
OutputString[(StringLength / sizeof(WCHAR)) - 1] = UNICODE_NULL;
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
case BusQueryCompatibleIDs:
|
case BusQueryCompatibleIDs:
|
||||||
|
{
|
||||||
if (DriveExtension->DiskType != RAMDISK_REGISTRY_DISK)
|
if (DriveExtension->DiskType != RAMDISK_REGISTRY_DISK)
|
||||||
{
|
{
|
||||||
Status = STATUS_INVALID_DEVICE_REQUEST;
|
Status = STATUS_INVALID_DEVICE_REQUEST;
|
||||||
|
@ -2159,9 +2128,10 @@ RamdiskQueryId(IN PRAMDISK_DRIVE_EXTENSION DriveExtension,
|
||||||
OutputString[(StringLength / sizeof(WCHAR)) - 1] = UNICODE_NULL;
|
OutputString[(StringLength / sizeof(WCHAR)) - 1] = UNICODE_NULL;
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
case BusQueryInstanceID:
|
case BusQueryInstanceID:
|
||||||
|
{
|
||||||
OutputString = ExAllocatePoolWithTag(PagedPool, DriveExtension->GuidString.MaximumLength, 'dmaR');
|
OutputString = ExAllocatePoolWithTag(PagedPool, DriveExtension->GuidString.MaximumLength, 'dmaR');
|
||||||
if (OutputString == NULL)
|
if (OutputString == NULL)
|
||||||
{
|
{
|
||||||
|
@ -2172,15 +2142,16 @@ RamdiskQueryId(IN PRAMDISK_DRIVE_EXTENSION DriveExtension,
|
||||||
wcsncpy(OutputString, DriveExtension->GuidString.Buffer, DriveExtension->GuidString.MaximumLength / sizeof(WCHAR));
|
wcsncpy(OutputString, DriveExtension->GuidString.Buffer, DriveExtension->GuidString.MaximumLength / sizeof(WCHAR));
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
case BusQueryDeviceSerialNumber:
|
case BusQueryDeviceSerialNumber:
|
||||||
|
{
|
||||||
//
|
//
|
||||||
// Nothing to do
|
// Nothing to do
|
||||||
//
|
//
|
||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
Irp->IoStatus.Status = Status;
|
Irp->IoStatus.Status = Status;
|
||||||
Irp->IoStatus.Information = (ULONG_PTR)OutputString;
|
Irp->IoStatus.Information = (ULONG_PTR)OutputString;
|
||||||
|
@ -2248,7 +2219,7 @@ RamdiskQueryDeviceText(IN PRAMDISK_DRIVE_EXTENSION DriveExtension,
|
||||||
switch (DeviceTextType)
|
switch (DeviceTextType)
|
||||||
{
|
{
|
||||||
case DeviceTextDescription:
|
case DeviceTextDescription:
|
||||||
|
{
|
||||||
OutputString = ExAllocatePoolWithTag(PagedPool, sizeof(L"RamDisk"), 'dmaR');
|
OutputString = ExAllocatePoolWithTag(PagedPool, sizeof(L"RamDisk"), 'dmaR');
|
||||||
if (OutputString == NULL)
|
if (OutputString == NULL)
|
||||||
{
|
{
|
||||||
|
@ -2259,9 +2230,10 @@ RamdiskQueryDeviceText(IN PRAMDISK_DRIVE_EXTENSION DriveExtension,
|
||||||
wcsncpy(OutputString, L"RamDisk", sizeof(L"RamDisk") / sizeof(WCHAR));
|
wcsncpy(OutputString, L"RamDisk", sizeof(L"RamDisk") / sizeof(WCHAR));
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
case DeviceTextLocationInformation:
|
case DeviceTextLocationInformation:
|
||||||
|
{
|
||||||
OutputString = ExAllocatePoolWithTag(PagedPool, sizeof(L"RamDisk\\0"), 'dmaR');
|
OutputString = ExAllocatePoolWithTag(PagedPool, sizeof(L"RamDisk\\0"), 'dmaR');
|
||||||
if (OutputString == NULL)
|
if (OutputString == NULL)
|
||||||
{
|
{
|
||||||
|
@ -2273,6 +2245,7 @@ RamdiskQueryDeviceText(IN PRAMDISK_DRIVE_EXTENSION DriveExtension,
|
||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
Irp->IoStatus.Status = Status;
|
Irp->IoStatus.Status = Status;
|
||||||
Irp->IoStatus.Information = (ULONG_PTR)OutputString;
|
Irp->IoStatus.Information = (ULONG_PTR)OutputString;
|
||||||
|
@ -2386,7 +2359,7 @@ RamdiskPnp(IN PDEVICE_OBJECT DeviceObject,
|
||||||
switch (Minor)
|
switch (Minor)
|
||||||
{
|
{
|
||||||
case IRP_MN_START_DEVICE:
|
case IRP_MN_START_DEVICE:
|
||||||
|
{
|
||||||
if (DeviceExtension->Type == RamdiskDrive)
|
if (DeviceExtension->Type == RamdiskDrive)
|
||||||
{
|
{
|
||||||
ULONG ResultLength;
|
ULONG ResultLength;
|
||||||
|
@ -2493,34 +2466,20 @@ RamdiskPnp(IN PDEVICE_OBJECT DeviceObject,
|
||||||
|
|
||||||
Irp->IoStatus.Status = Status;
|
Irp->IoStatus.Status = Status;
|
||||||
break;
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
case IRP_MN_QUERY_STOP_DEVICE:
|
case IRP_MN_QUERY_STOP_DEVICE:
|
||||||
|
|
||||||
UNIMPLEMENTED_DBGBREAK("PnP IRP: %lx\n", Minor);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case IRP_MN_CANCEL_STOP_DEVICE:
|
case IRP_MN_CANCEL_STOP_DEVICE:
|
||||||
|
|
||||||
UNIMPLEMENTED_DBGBREAK("PnP IRP: %lx\n", Minor);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case IRP_MN_STOP_DEVICE:
|
case IRP_MN_STOP_DEVICE:
|
||||||
|
|
||||||
UNIMPLEMENTED_DBGBREAK("PnP IRP: %lx\n", Minor);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case IRP_MN_QUERY_REMOVE_DEVICE:
|
case IRP_MN_QUERY_REMOVE_DEVICE:
|
||||||
|
|
||||||
UNIMPLEMENTED_DBGBREAK("PnP IRP: %lx\n", Minor);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case IRP_MN_CANCEL_REMOVE_DEVICE:
|
case IRP_MN_CANCEL_REMOVE_DEVICE:
|
||||||
|
{
|
||||||
UNIMPLEMENTED_DBGBREAK("PnP IRP: %lx\n", Minor);
|
UNIMPLEMENTED_DBGBREAK("PnP IRP: %lx\n", Minor);
|
||||||
break;
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
case IRP_MN_REMOVE_DEVICE:
|
case IRP_MN_REMOVE_DEVICE:
|
||||||
|
{
|
||||||
//
|
//
|
||||||
// Remove the proper device
|
// Remove the proper device
|
||||||
//
|
//
|
||||||
|
@ -2547,14 +2506,14 @@ RamdiskPnp(IN PDEVICE_OBJECT DeviceObject,
|
||||||
IoCompleteRequest(Irp, IO_NO_INCREMENT);
|
IoCompleteRequest(Irp, IO_NO_INCREMENT);
|
||||||
return Status;
|
return Status;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
case IRP_MN_SURPRISE_REMOVAL:
|
case IRP_MN_SURPRISE_REMOVAL:
|
||||||
|
|
||||||
UNIMPLEMENTED_DBGBREAK("PnP IRP: %lx\n", Minor);
|
UNIMPLEMENTED_DBGBREAK("PnP IRP: %lx\n", Minor);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case IRP_MN_QUERY_ID:
|
case IRP_MN_QUERY_ID:
|
||||||
|
{
|
||||||
//
|
//
|
||||||
// Are we a drive?
|
// Are we a drive?
|
||||||
//
|
//
|
||||||
|
@ -2563,9 +2522,10 @@ RamdiskPnp(IN PDEVICE_OBJECT DeviceObject,
|
||||||
Status = RamdiskQueryId((PRAMDISK_DRIVE_EXTENSION)DeviceExtension, Irp);
|
Status = RamdiskQueryId((PRAMDISK_DRIVE_EXTENSION)DeviceExtension, Irp);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
case IRP_MN_QUERY_BUS_INFORMATION:
|
case IRP_MN_QUERY_BUS_INFORMATION:
|
||||||
|
{
|
||||||
//
|
//
|
||||||
// Are we a drive?
|
// Are we a drive?
|
||||||
//
|
//
|
||||||
|
@ -2574,14 +2534,14 @@ RamdiskPnp(IN PDEVICE_OBJECT DeviceObject,
|
||||||
Status = RamdiskQueryBusInformation(DeviceObject, Irp);
|
Status = RamdiskQueryBusInformation(DeviceObject, Irp);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
case IRP_MN_EJECT:
|
case IRP_MN_EJECT:
|
||||||
|
|
||||||
UNIMPLEMENTED_DBGBREAK("PnP IRP: %lx\n", Minor);
|
UNIMPLEMENTED_DBGBREAK("PnP IRP: %lx\n", Minor);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case IRP_MN_QUERY_DEVICE_TEXT:
|
case IRP_MN_QUERY_DEVICE_TEXT:
|
||||||
|
{
|
||||||
//
|
//
|
||||||
// Are we a drive?
|
// Are we a drive?
|
||||||
//
|
//
|
||||||
|
@ -2590,9 +2550,10 @@ RamdiskPnp(IN PDEVICE_OBJECT DeviceObject,
|
||||||
Status = RamdiskQueryDeviceText((PRAMDISK_DRIVE_EXTENSION)DeviceExtension, Irp);
|
Status = RamdiskQueryDeviceText((PRAMDISK_DRIVE_EXTENSION)DeviceExtension, Irp);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
case IRP_MN_QUERY_DEVICE_RELATIONS:
|
case IRP_MN_QUERY_DEVICE_RELATIONS:
|
||||||
|
{
|
||||||
//
|
//
|
||||||
// Call our main routine
|
// Call our main routine
|
||||||
//
|
//
|
||||||
|
@ -2602,9 +2563,10 @@ RamdiskPnp(IN PDEVICE_OBJECT DeviceObject,
|
||||||
DeviceObject,
|
DeviceObject,
|
||||||
Irp);
|
Irp);
|
||||||
goto ReleaseAndReturn;
|
goto ReleaseAndReturn;
|
||||||
|
}
|
||||||
|
|
||||||
case IRP_MN_QUERY_CAPABILITIES:
|
case IRP_MN_QUERY_CAPABILITIES:
|
||||||
|
{
|
||||||
//
|
//
|
||||||
// Are we a drive?
|
// Are we a drive?
|
||||||
//
|
//
|
||||||
|
@ -2613,18 +2575,19 @@ RamdiskPnp(IN PDEVICE_OBJECT DeviceObject,
|
||||||
Status = RamdiskQueryCapabilities(DeviceObject, Irp);
|
Status = RamdiskQueryCapabilities(DeviceObject, Irp);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
case IRP_MN_QUERY_RESOURCES:
|
case IRP_MN_QUERY_RESOURCES:
|
||||||
case IRP_MN_QUERY_RESOURCE_REQUIREMENTS:
|
case IRP_MN_QUERY_RESOURCE_REQUIREMENTS:
|
||||||
|
{
|
||||||
//
|
//
|
||||||
// Complete immediately without touching it
|
// Complete immediately without touching it
|
||||||
//
|
//
|
||||||
IoCompleteRequest(Irp, IO_NO_INCREMENT);
|
IoCompleteRequest(Irp, IO_NO_INCREMENT);
|
||||||
goto ReleaseAndReturn;
|
goto ReleaseAndReturn;
|
||||||
|
}
|
||||||
|
|
||||||
default:
|
default:
|
||||||
|
|
||||||
DPRINT1("Illegal IRP: %lx\n", Minor);
|
DPRINT1("Illegal IRP: %lx\n", Minor);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -2702,6 +2665,7 @@ RamdiskPower(IN PDEVICE_OBJECT DeviceObject,
|
||||||
switch (IoStackLocation->MinorFunction)
|
switch (IoStackLocation->MinorFunction)
|
||||||
{
|
{
|
||||||
case IRP_MN_SET_POWER:
|
case IRP_MN_SET_POWER:
|
||||||
|
{
|
||||||
//
|
//
|
||||||
// If setting device power state
|
// If setting device power state
|
||||||
// it's all fine and return success
|
// it's all fine and return success
|
||||||
|
@ -2718,8 +2682,10 @@ RamdiskPower(IN PDEVICE_OBJECT DeviceObject,
|
||||||
PoStartNextPowerIrp(Irp);
|
PoStartNextPowerIrp(Irp);
|
||||||
IoCompleteRequest(Irp, IO_NO_INCREMENT);
|
IoCompleteRequest(Irp, IO_NO_INCREMENT);
|
||||||
break;
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
case IRP_MN_QUERY_POWER:
|
case IRP_MN_QUERY_POWER:
|
||||||
|
{
|
||||||
//
|
//
|
||||||
// We can obviously accept all states
|
// We can obviously accept all states
|
||||||
// So just return success
|
// So just return success
|
||||||
|
@ -2729,8 +2695,10 @@ RamdiskPower(IN PDEVICE_OBJECT DeviceObject,
|
||||||
PoStartNextPowerIrp(Irp);
|
PoStartNextPowerIrp(Irp);
|
||||||
IoCompleteRequest(Irp, IO_NO_INCREMENT);
|
IoCompleteRequest(Irp, IO_NO_INCREMENT);
|
||||||
break;
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
default:
|
default:
|
||||||
|
{
|
||||||
//
|
//
|
||||||
// Just complete and save status for return
|
// Just complete and save status for return
|
||||||
//
|
//
|
||||||
|
@ -2739,6 +2707,7 @@ RamdiskPower(IN PDEVICE_OBJECT DeviceObject,
|
||||||
IoCompleteRequest(Irp, IO_NO_INCREMENT);
|
IoCompleteRequest(Irp, IO_NO_INCREMENT);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return Status;
|
return Status;
|
||||||
}
|
}
|
||||||
|
@ -2982,6 +2951,8 @@ RamdiskAddDevice(IN PDRIVER_OBJECT DriverObject,
|
||||||
//
|
//
|
||||||
// Are we being booted from setup? Not yet supported
|
// Are we being booted from setup? Not yet supported
|
||||||
//
|
//
|
||||||
|
if (KeLoaderBlock->SetupLdrBlock)
|
||||||
|
DPRINT1("FIXME: RamdiskAddDevice unsupported when being started from SETUPLDR!\n");
|
||||||
// ASSERT(!KeLoaderBlock->SetupLdrBlock);
|
// ASSERT(!KeLoaderBlock->SetupLdrBlock);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -3098,6 +3069,8 @@ DriverEntry(IN PDRIVER_OBJECT DriverObject,
|
||||||
//
|
//
|
||||||
// Installing from Ramdisk isn't supported yet
|
// Installing from Ramdisk isn't supported yet
|
||||||
//
|
//
|
||||||
|
if (KeLoaderBlock->SetupLdrBlock)
|
||||||
|
DPRINT1("FIXME: Installing from RamDisk is UNSUPPORTED!\n");
|
||||||
// ASSERT(!KeLoaderBlock->SetupLdrBlock);
|
// ASSERT(!KeLoaderBlock->SetupLdrBlock);
|
||||||
|
|
||||||
//
|
//
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue