[PCIIDEX]
authorCameron Gutman <aicommander@gmail.com>
Tue, 31 May 2011 19:29:22 +0000 (19:29 +0000)
committerCameron Gutman <aicommander@gmail.com>
Tue, 31 May 2011 19:29:22 +0000 (19:29 +0000)
- Handle IRP_MN_QUERY_REMOVE_DEVICE
- Handle IRP_MN_QUERY_PNP_DEVICE_STATE to report that we are not disableable to the PnP manager so we don't get removed during driver installation

svn path=/trunk/; revision=52028

reactos/drivers/storage/ide/pciidex/fdo.c
reactos/drivers/storage/ide/pciidex/pdo.c

index ff140e1..497842f 100644 (file)
@@ -402,7 +402,7 @@ PciIdeXFdoPnpDispatch(
 {
        ULONG MinorFunction;
        PIO_STACK_LOCATION Stack;
-       ULONG_PTR Information = 0;
+       ULONG_PTR Information = Irp->IoStatus.Information;
        NTSTATUS Status;
 
        Stack = IoGetCurrentIrpStackLocation(Irp);
@@ -419,6 +419,12 @@ PciIdeXFdoPnpDispatch(
                                Status = PciIdeXFdoStartDevice(DeviceObject, Irp);
                        break;
                }
+                case IRP_MN_QUERY_REMOVE_DEVICE: /* 0x01 */
+                {
+                        DPRINT("IRP_MJ_PNP / IRP_MN_QUERY_REMOVE_DEVICE\n");
+                        Status = STATUS_UNSUCCESSFUL;
+                        break;
+                }
                case IRP_MN_QUERY_DEVICE_RELATIONS: /* 0x07 */
                {
                        switch (Stack->Parameters.QueryDeviceRelations.Type)
@@ -441,6 +447,13 @@ PciIdeXFdoPnpDispatch(
                        }
                        break;
                }
+                case IRP_MN_QUERY_PNP_DEVICE_STATE: /* 0x14 */
+                {
+                        DPRINT("IRP_MJ_PNP / IRP_MN_QUERY_PNP_DEVICE_STATE\n");
+                        Information |= PNP_DEVICE_NOT_DISABLEABLE;
+                        Status = STATUS_SUCCESS;
+                        break;
+                }
                case IRP_MN_FILTER_RESOURCE_REQUIREMENTS: /* 0x0d */
                {
                        DPRINT("IRP_MJ_PNP / IRP_MN_FILTER_RESOURCE_REQUIREMENTS\n");
index 532cc22..f79b00a 100644 (file)
@@ -360,7 +360,7 @@ PciIdeXPdoPnpDispatch(
 {
        ULONG MinorFunction;
        PIO_STACK_LOCATION Stack;
-       ULONG_PTR Information = 0;
+       ULONG_PTR Information = Irp->IoStatus.Information;
        NTSTATUS Status;
 
        Stack = IoGetCurrentIrpStackLocation(Irp);
@@ -404,6 +404,12 @@ PciIdeXPdoPnpDispatch(
                        Status = STATUS_SUCCESS;
                        break;
                }
+                case IRP_MN_QUERY_REMOVE_DEVICE: /* 0x01 */
+                {
+                        DPRINT("IRP_MJ_PNP / IRP_MN_QUERY_REMOVE_DEVICE\n");
+                        Status = STATUS_UNSUCCESSFUL;
+                        break;
+                }
                case IRP_MN_QUERY_DEVICE_RELATIONS: /* 0x07 */
                {
                        switch (Stack->Parameters.QueryDeviceRelations.Type)
@@ -485,6 +491,13 @@ PciIdeXPdoPnpDispatch(
                        Status = PciIdeXPdoQueryId(DeviceObject, Irp, &Information);
                        break;
                }
+                case IRP_MN_QUERY_PNP_DEVICE_STATE: /* 0x14 */
+                {
+                        DPRINT("IRP_MJ_PNP / IRP_MN_QUERY_PNP_DEVICE_STATE\n");
+                        Information |= PNP_DEVICE_NOT_DISABLEABLE;
+                        Status = STATUS_SUCCESS;
+                        break;
+                }
                case IRP_MN_QUERY_BUS_INFORMATION: /* 0x15 */
                {
                        PPNP_BUS_INFORMATION BusInfo;