mirror of
https://github.com/reactos/reactos.git
synced 2024-07-04 03:34:16 +00:00
[CLASS2]
- Add a Signature member to make devices created from class2's AddDevice recognizable CORE-8911 svn path=/trunk/; revision=70306
This commit is contained in:
parent
db44f7d8fd
commit
be9fbd0e66
|
@ -137,6 +137,7 @@ DriverEntry(
|
||||||
/* The following hack to assign drive letters with a non-PnP storage stack */
|
/* The following hack to assign drive letters with a non-PnP storage stack */
|
||||||
|
|
||||||
typedef struct _CLASS_DEVICE_INFO {
|
typedef struct _CLASS_DEVICE_INFO {
|
||||||
|
ULONG Signature;
|
||||||
ULONG DeviceType;
|
ULONG DeviceType;
|
||||||
ULONG Partitions;
|
ULONG Partitions;
|
||||||
ULONG DeviceNumber;
|
ULONG DeviceNumber;
|
||||||
|
@ -350,6 +351,7 @@ ScsiClassPlugPlay(
|
||||||
|
|
||||||
if (IrpSp->MinorFunction == IRP_MN_START_DEVICE)
|
if (IrpSp->MinorFunction == IRP_MN_START_DEVICE)
|
||||||
{
|
{
|
||||||
|
ASSERT(DeviceInfo->Signature == '2slc');
|
||||||
IoSkipCurrentIrpStackLocation(Irp);
|
IoSkipCurrentIrpStackLocation(Irp);
|
||||||
return STATUS_SUCCESS;
|
return STATUS_SUCCESS;
|
||||||
}
|
}
|
||||||
|
@ -357,6 +359,7 @@ ScsiClassPlugPlay(
|
||||||
{
|
{
|
||||||
PCLASS_DEVICE_INFO DeviceInfo = DeviceObject->DeviceExtension;
|
PCLASS_DEVICE_INFO DeviceInfo = DeviceObject->DeviceExtension;
|
||||||
|
|
||||||
|
ASSERT(DeviceInfo->Signature == '2slc');
|
||||||
ScsiClassRemoveDriveLetter(DeviceInfo);
|
ScsiClassRemoveDriveLetter(DeviceInfo);
|
||||||
|
|
||||||
Irp->IoStatus.Status = STATUS_SUCCESS;
|
Irp->IoStatus.Status = STATUS_SUCCESS;
|
||||||
|
@ -403,6 +406,7 @@ ScsiClassAddDevice(
|
||||||
|
|
||||||
DeviceInfo = DeviceObject->DeviceExtension;
|
DeviceInfo = DeviceObject->DeviceExtension;
|
||||||
RtlZeroMemory(DeviceInfo, sizeof(CLASS_DEVICE_INFO));
|
RtlZeroMemory(DeviceInfo, sizeof(CLASS_DEVICE_INFO));
|
||||||
|
DeviceInfo->Signature = '2slc';
|
||||||
|
|
||||||
/* Attach it to the PDO */
|
/* Attach it to the PDO */
|
||||||
DeviceInfo->LowerDevice = IoAttachDeviceToDeviceStack(DeviceObject, PhysicalDeviceObject);
|
DeviceInfo->LowerDevice = IoAttachDeviceToDeviceStack(DeviceObject, PhysicalDeviceObject);
|
||||||
|
@ -624,6 +628,8 @@ Return Value:
|
||||||
{
|
{
|
||||||
PDEVICE_EXTENSION deviceExtension = DeviceObject->DeviceExtension;
|
PDEVICE_EXTENSION deviceExtension = DeviceObject->DeviceExtension;
|
||||||
|
|
||||||
|
ASSERT(*(PULONG)deviceExtension != '2slc');
|
||||||
|
|
||||||
//
|
//
|
||||||
// Invoke the device-specific routine, if one exists. Otherwise complete
|
// Invoke the device-specific routine, if one exists. Otherwise complete
|
||||||
// with SUCCESS
|
// with SUCCESS
|
||||||
|
@ -678,6 +684,8 @@ Return Value:
|
||||||
ULONG maximumTransferLength = deviceExtension->PortCapabilities->MaximumTransferLength;
|
ULONG maximumTransferLength = deviceExtension->PortCapabilities->MaximumTransferLength;
|
||||||
NTSTATUS status;
|
NTSTATUS status;
|
||||||
|
|
||||||
|
ASSERT(*(PULONG)deviceExtension != '2slc');
|
||||||
|
|
||||||
if (DeviceObject->Flags & DO_VERIFY_VOLUME &&
|
if (DeviceObject->Flags & DO_VERIFY_VOLUME &&
|
||||||
!(currentIrpStack->Flags & SL_OVERRIDE_VERIFY_VOLUME)) {
|
!(currentIrpStack->Flags & SL_OVERRIDE_VERIFY_VOLUME)) {
|
||||||
|
|
||||||
|
@ -1041,6 +1049,8 @@ Return Value:
|
||||||
SCSI_REQUEST_BLOCK srb;
|
SCSI_REQUEST_BLOCK srb;
|
||||||
NTSTATUS status;
|
NTSTATUS status;
|
||||||
|
|
||||||
|
ASSERT(*(PULONG)deviceExtension != '2slc');
|
||||||
|
|
||||||
//
|
//
|
||||||
// Allocate read capacity buffer from nonpaged pool.
|
// Allocate read capacity buffer from nonpaged pool.
|
||||||
//
|
//
|
||||||
|
@ -1264,6 +1274,8 @@ Return Value:
|
||||||
PSCSI_REQUEST_BLOCK srb;
|
PSCSI_REQUEST_BLOCK srb;
|
||||||
KIRQL currentIrql;
|
KIRQL currentIrql;
|
||||||
|
|
||||||
|
ASSERT(*(PULONG)deviceExtension != '2slc');
|
||||||
|
|
||||||
//
|
//
|
||||||
// Allocate context from nonpaged pool.
|
// Allocate context from nonpaged pool.
|
||||||
//
|
//
|
||||||
|
@ -1409,6 +1421,8 @@ Return Value:
|
||||||
PCOMPLETION_CONTEXT context;
|
PCOMPLETION_CONTEXT context;
|
||||||
PCDB cdb;
|
PCDB cdb;
|
||||||
|
|
||||||
|
ASSERT(*(PULONG)deviceExtension != '2slc');
|
||||||
|
|
||||||
//
|
//
|
||||||
// Allocate Srb from nonpaged pool.
|
// Allocate Srb from nonpaged pool.
|
||||||
//
|
//
|
||||||
|
@ -1633,6 +1647,8 @@ Return Value:
|
||||||
DebugPrint((2, "ScsiClassSplitRequest: Requires %d IRPs\n", irpCount));
|
DebugPrint((2, "ScsiClassSplitRequest: Requires %d IRPs\n", irpCount));
|
||||||
DebugPrint((2, "ScsiClassSplitRequest: Original IRP %lx\n", Irp));
|
DebugPrint((2, "ScsiClassSplitRequest: Original IRP %lx\n", Irp));
|
||||||
|
|
||||||
|
ASSERT(*(PULONG)deviceExtension != '2slc');
|
||||||
|
|
||||||
//
|
//
|
||||||
// If all partial transfers complete successfully then the status and
|
// If all partial transfers complete successfully then the status and
|
||||||
// bytes transferred are already set up. Failing a partial-transfer IRP
|
// bytes transferred are already set up. Failing a partial-transfer IRP
|
||||||
|
@ -1817,6 +1833,8 @@ Return Value:
|
||||||
NTSTATUS status;
|
NTSTATUS status;
|
||||||
BOOLEAN retry;
|
BOOLEAN retry;
|
||||||
|
|
||||||
|
ASSERT(*(PULONG)deviceExtension != '2slc');
|
||||||
|
|
||||||
//
|
//
|
||||||
// Check SRB status for success of completing request.
|
// Check SRB status for success of completing request.
|
||||||
//
|
//
|
||||||
|
@ -1969,6 +1987,8 @@ Return Value:
|
||||||
NTSTATUS status;
|
NTSTATUS status;
|
||||||
BOOLEAN retry;
|
BOOLEAN retry;
|
||||||
|
|
||||||
|
ASSERT(*(PULONG)deviceExtension != '2slc');
|
||||||
|
|
||||||
//
|
//
|
||||||
// Check SRB status for success of completing request.
|
// Check SRB status for success of completing request.
|
||||||
//
|
//
|
||||||
|
@ -2190,6 +2210,8 @@ Return Value:
|
||||||
|
|
||||||
PAGED_CODE();
|
PAGED_CODE();
|
||||||
|
|
||||||
|
ASSERT(*(PULONG)deviceExtension != '2slc');
|
||||||
|
|
||||||
dummy.QuadPart = 0;
|
dummy.QuadPart = 0;
|
||||||
|
|
||||||
//
|
//
|
||||||
|
@ -2481,6 +2503,7 @@ Return Value:
|
||||||
ULONG i;
|
ULONG i;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
ASSERT(*(PULONG)deviceExtension != '2slc');
|
||||||
|
|
||||||
//
|
//
|
||||||
// Check that request sense buffer is valid.
|
// Check that request sense buffer is valid.
|
||||||
|
@ -3161,6 +3184,8 @@ Return Value:
|
||||||
PIO_STACK_LOCATION nextIrpStack = IoGetNextIrpStackLocation(Irp);
|
PIO_STACK_LOCATION nextIrpStack = IoGetNextIrpStackLocation(Irp);
|
||||||
ULONG transferByteCount;
|
ULONG transferByteCount;
|
||||||
|
|
||||||
|
ASSERT(*(PULONG)deviceExtension != '2slc');
|
||||||
|
|
||||||
//
|
//
|
||||||
// Determine the transfer count of the request. If this is a read or a
|
// Determine the transfer count of the request. If this is a read or a
|
||||||
// write then the transfer count is in the Irp stack. Otherwise assume
|
// write then the transfer count is in the Irp stack. Otherwise assume
|
||||||
|
@ -3292,6 +3317,8 @@ Return Value:
|
||||||
ULONG logicalBlockAddress;
|
ULONG logicalBlockAddress;
|
||||||
USHORT transferBlocks;
|
USHORT transferBlocks;
|
||||||
|
|
||||||
|
ASSERT(*(PULONG)deviceExtension != '2slc');
|
||||||
|
|
||||||
//
|
//
|
||||||
// Calculate relative sector address.
|
// Calculate relative sector address.
|
||||||
//
|
//
|
||||||
|
@ -3511,6 +3538,8 @@ Return Value:
|
||||||
ULONG retries = 1;
|
ULONG retries = 1;
|
||||||
NTSTATUS status;
|
NTSTATUS status;
|
||||||
|
|
||||||
|
ASSERT(*(PULONG)deviceExtension != '2slc');
|
||||||
|
|
||||||
RtlZeroMemory(&srb, sizeof(SCSI_REQUEST_BLOCK));
|
RtlZeroMemory(&srb, sizeof(SCSI_REQUEST_BLOCK));
|
||||||
|
|
||||||
//
|
//
|
||||||
|
@ -3687,6 +3716,8 @@ Return Value:
|
||||||
|
|
||||||
PAGED_CODE();
|
PAGED_CODE();
|
||||||
|
|
||||||
|
ASSERT(*(PULONG)deviceExtension != '2slc');
|
||||||
|
|
||||||
//
|
//
|
||||||
// Write length to SRB.
|
// Write length to SRB.
|
||||||
//
|
//
|
||||||
|
@ -3860,6 +3891,7 @@ Return Value:
|
||||||
|
|
||||||
PDEVICE_EXTENSION deviceExtension = DeviceObject->DeviceExtension;
|
PDEVICE_EXTENSION deviceExtension = DeviceObject->DeviceExtension;
|
||||||
|
|
||||||
|
ASSERT(*(PULONG)deviceExtension != '2slc');
|
||||||
|
|
||||||
//
|
//
|
||||||
// Call the class specific driver DeviceControl routine.
|
// Call the class specific driver DeviceControl routine.
|
||||||
|
@ -3909,6 +3941,8 @@ Return Value:
|
||||||
NTSTATUS status;
|
NTSTATUS status;
|
||||||
ULONG modifiedIoControlCode;
|
ULONG modifiedIoControlCode;
|
||||||
|
|
||||||
|
ASSERT(*(PULONG)deviceExtension != '2slc');
|
||||||
|
|
||||||
if (irpStack->Parameters.DeviceIoControl.IoControlCode ==
|
if (irpStack->Parameters.DeviceIoControl.IoControlCode ==
|
||||||
IOCTL_STORAGE_RESET_DEVICE) {
|
IOCTL_STORAGE_RESET_DEVICE) {
|
||||||
|
|
||||||
|
@ -4456,6 +4490,8 @@ Return Value:
|
||||||
{
|
{
|
||||||
PDEVICE_EXTENSION deviceExtension = DeviceObject->DeviceExtension;
|
PDEVICE_EXTENSION deviceExtension = DeviceObject->DeviceExtension;
|
||||||
|
|
||||||
|
ASSERT(*(PULONG)deviceExtension != '2slc');
|
||||||
|
|
||||||
if (deviceExtension->ClassShutdownFlush) {
|
if (deviceExtension->ClassShutdownFlush) {
|
||||||
|
|
||||||
//
|
//
|
||||||
|
@ -4609,6 +4645,8 @@ Return Value:
|
||||||
|
|
||||||
PDEVICE_EXTENSION deviceExtension = deviceObject->DeviceExtension;
|
PDEVICE_EXTENSION deviceExtension = deviceObject->DeviceExtension;
|
||||||
|
|
||||||
|
ASSERT(*(PULONG)deviceExtension != '2slc');
|
||||||
|
|
||||||
//
|
//
|
||||||
// Fill in entry points
|
// Fill in entry points
|
||||||
//
|
//
|
||||||
|
@ -4854,6 +4892,8 @@ Return Value:
|
||||||
PDEVICE_EXTENSION deviceExtension = DeviceObject->DeviceExtension;
|
PDEVICE_EXTENSION deviceExtension = DeviceObject->DeviceExtension;
|
||||||
PSCSI_REQUEST_BLOCK srb;
|
PSCSI_REQUEST_BLOCK srb;
|
||||||
|
|
||||||
|
ASSERT(*(PULONG)deviceExtension != '2slc');
|
||||||
|
|
||||||
//
|
//
|
||||||
// Get a pointer to the SRB.
|
// Get a pointer to the SRB.
|
||||||
//
|
//
|
||||||
|
@ -5108,6 +5148,9 @@ Return Value:
|
||||||
deviceExtension->PhysicalDevice->DeviceExtension;
|
deviceExtension->PhysicalDevice->DeviceExtension;
|
||||||
PIRP originalIrp;
|
PIRP originalIrp;
|
||||||
|
|
||||||
|
ASSERT(*(PULONG)deviceExtension != '2slc');
|
||||||
|
ASSERT(*(PULONG)physicalExtension != '2slc');
|
||||||
|
|
||||||
originalIrp = irpStack->Parameters.Others.Argument1;
|
originalIrp = irpStack->Parameters.Others.Argument1;
|
||||||
|
|
||||||
//
|
//
|
||||||
|
|
Loading…
Reference in a new issue