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