ntoskrnl.exe: Implement removing plug and play devices. (v4)

Sebastian Lackner sebastian at fds-team.de
Wed Sep 21 06:38:21 CDT 2016


From: Aric Stewart <aric at codeweavers.com>

Signed-off-by: Aric Stewart <aric at codeweavers.com>
Signed-off-by: Sebastian Lackner <sebastian at fds-team.de>
---

Changes in v4:
* Move the code to a separate function (mainly for consistency reasons).

 dlls/ntoskrnl.exe/ntoskrnl.c |   13 +++++++++++++
 1 file changed, 13 insertions(+)

diff --git a/dlls/ntoskrnl.exe/ntoskrnl.c b/dlls/ntoskrnl.exe/ntoskrnl.c
index 93029a4..522facf 100644
--- a/dlls/ntoskrnl.exe/ntoskrnl.c
+++ b/dlls/ntoskrnl.exe/ntoskrnl.c
@@ -3064,6 +3064,16 @@ static void handle_bus_relations( DEVICE_OBJECT *device )
 }
 
 
+static void handle_removal_relations( DEVICE_OBJECT *device )
+{
+    TRACE_(plugplay)( "(%p)\n", device );
+
+    send_power_irp( device, PowerDeviceD3 );
+    send_pnp_irp( device, IRP_MN_SURPRISE_REMOVAL );
+    send_pnp_irp( device, IRP_MN_REMOVE_DEVICE );
+}
+
+
 /***********************************************************************
  *           IoInvalidateDeviceRelations (NTOSKRNL.EXE.@)
  */
@@ -3076,6 +3086,9 @@ void WINAPI IoInvalidateDeviceRelations( DEVICE_OBJECT *device_object, DEVICE_RE
         case BusRelations:
             handle_bus_relations( device_object );
             break;
+        case RemovalRelations:
+            handle_removal_relations( device_object );
+            break;
         default:
             FIXME( "unhandled relation %i\n", type );
             break;
-- 
2.9.0



More information about the wine-patches mailing list