https://git.reactos.org/?p=reactos.git;a=commitdiff;h=a05051f5546ad2a118daf4...
commit a05051f5546ad2a118daf4e9de484b10b472f152 Author: Eric Kohl eric.kohl@reactos.org AuthorDate: Sat Feb 29 14:26:16 2020 +0100 Commit: Eric Kohl eric.kohl@reactos.org CommitDate: Sat Feb 29 14:26:16 2020 +0100
[NTOS:IO] Move IopRemovePlugPlayEvent around and add the ResponseData parameter (not used yet) --- ntoskrnl/io/pnpmgr/plugplay.c | 54 +++++++++++++++++++++++-------------------- 1 file changed, 29 insertions(+), 25 deletions(-)
diff --git a/ntoskrnl/io/pnpmgr/plugplay.c b/ntoskrnl/io/pnpmgr/plugplay.c index 7782c3ee135..c1d5baa816a 100644 --- a/ntoskrnl/io/pnpmgr/plugplay.c +++ b/ntoskrnl/io/pnpmgr/plugplay.c @@ -91,30 +91,6 @@ IopQueueTargetDeviceEvent(const GUID *Guid, }
-/* - * Remove the current PnP event from the tail of the event queue - * and signal IopPnpNotifyEvent if there is yet another event in the queue. - */ -static NTSTATUS -IopRemovePlugPlayEvent(VOID) -{ - /* Remove a pnp event entry from the tail of the queue */ - if (!IsListEmpty(&IopPnpEventQueueHead)) - { - ExFreePool(CONTAINING_RECORD(RemoveTailList(&IopPnpEventQueueHead), PNP_EVENT_ENTRY, ListEntry)); - } - - /* Signal the next pnp event in the queue */ - if (!IsListEmpty(&IopPnpEventQueueHead)) - { - KeSetEvent(&IopPnpNotifyEvent, - 0, - FALSE); - } - - return STATUS_SUCCESS; -} - static PDEVICE_OBJECT IopTraverseDeviceNode(PDEVICE_NODE Node, PUNICODE_STRING DeviceInstance) { @@ -245,6 +221,34 @@ IopPnpEnumerateDevice(PPLUGPLAY_CONTROL_ENUMERATE_DEVICE_DATA DeviceData) return Status; }
+ +/* + * Remove the current PnP event from the tail of the event queue + * and signal IopPnpNotifyEvent if there is yet another event in the queue. + */ +static +NTSTATUS +IopRemovePlugPlayEvent( + _In_ PPLUGPLAY_CONTROL_USER_RESPONSE_DATA ResponseData) +{ + /* Remove a pnp event entry from the tail of the queue */ + if (!IsListEmpty(&IopPnpEventQueueHead)) + { + ExFreePool(CONTAINING_RECORD(RemoveTailList(&IopPnpEventQueueHead), PNP_EVENT_ENTRY, ListEntry)); + } + + /* Signal the next pnp event in the queue */ + if (!IsListEmpty(&IopPnpEventQueueHead)) + { + KeSetEvent(&IopPnpNotifyEvent, + 0, + FALSE); + } + + return STATUS_SUCCESS; +} + + static NTSTATUS IopGetInterfaceDeviceList(PPLUGPLAY_CONTROL_INTERFACE_DEVICE_LIST_DATA DeviceList) { @@ -1348,7 +1352,7 @@ NtPlugPlayControl(IN PLUGPLAY_CONTROL_CLASS PlugPlayControlClass, case PlugPlayControlUserResponse: if (!Buffer || BufferLength < sizeof(PLUGPLAY_CONTROL_USER_RESPONSE_DATA)) return STATUS_INVALID_PARAMETER; - return IopRemovePlugPlayEvent(); + return IopRemovePlugPlayEvent((PPLUGPLAY_CONTROL_USER_RESPONSE_DATA)Buffer);
// case PlugPlayControlGenerateLegacyDevice: