From b8ac3d7684b9990974a60f4f2fcf06d88f9f94f5 Mon Sep 17 00:00:00 2001 From: Aric Stewart Date: Wed, 21 Sep 2016 13:38:21 +0200 Subject: [PATCH] ntoskrnl.exe: Implement removing plug and play devices. Signed-off-by: Aric Stewart Signed-off-by: Sebastian Lackner Signed-off-by: Alexandre Julliard --- 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 93029a43ef4..522facf8587 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;