Rémi Bernon : wineusb.sys: Introduce new remove_pending_irps helper.
Alexandre Julliard
julliard at winehq.org
Thu Jul 1 15:53:50 CDT 2021
Module: wine
Branch: master
Commit: b38db8a69c1921b0d97da4b56ff222e5998a8f40
URL: https://source.winehq.org/git/wine.git/?a=commit;h=b38db8a69c1921b0d97da4b56ff222e5998a8f40
Author: Rémi Bernon <rbernon at codeweavers.com>
Date: Thu Jul 1 09:51:22 2021 +0200
wineusb.sys: Introduce new remove_pending_irps helper.
Signed-off-by: Rémi Bernon <rbernon at codeweavers.com>
Signed-off-by: Zebediah Figura <zfigura at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>
---
dlls/wineusb.sys/wineusb.c | 26 +++++++++++++++-----------
1 file changed, 15 insertions(+), 11 deletions(-)
diff --git a/dlls/wineusb.sys/wineusb.c b/dlls/wineusb.sys/wineusb.c
index b8cefdaff5e..8fb1d75f121 100644
--- a/dlls/wineusb.sys/wineusb.c
+++ b/dlls/wineusb.sys/wineusb.c
@@ -363,6 +363,20 @@ static NTSTATUS query_id(const struct usb_device *device, IRP *irp, BUS_QUERY_ID
return STATUS_SUCCESS;
}
+static void remove_pending_irps(struct usb_device *device)
+{
+ LIST_ENTRY *entry;
+ IRP *irp;
+
+ while ((entry = RemoveHeadList(&device->irp_list)) != &device->irp_list)
+ {
+ irp = CONTAINING_RECORD(entry, IRP, Tail.Overlay.ListEntry);
+ irp->IoStatus.Status = STATUS_DELETE_PENDING;
+ irp->IoStatus.Information = 0;
+ IoCompleteRequest(irp, IO_NO_INCREMENT);
+ }
+}
+
static NTSTATUS pdo_pnp(DEVICE_OBJECT *device_obj, IRP *irp)
{
IO_STACK_LOCATION *stack = IoGetCurrentIrpStackLocation(irp);
@@ -393,17 +407,8 @@ static NTSTATUS pdo_pnp(DEVICE_OBJECT *device_obj, IRP *irp)
break;
case IRP_MN_REMOVE_DEVICE:
- {
- LIST_ENTRY *entry;
-
EnterCriticalSection(&wineusb_cs);
- while ((entry = RemoveHeadList(&device->irp_list)) != &device->irp_list)
- {
- irp = CONTAINING_RECORD(entry, IRP, Tail.Overlay.ListEntry);
- irp->IoStatus.Status = STATUS_DELETE_PENDING;
- irp->IoStatus.Information = 0;
- IoCompleteRequest(irp, IO_NO_INCREMENT);
- }
+ remove_pending_irps(device);
LeaveCriticalSection(&wineusb_cs);
if (device->removed)
@@ -419,7 +424,6 @@ static NTSTATUS pdo_pnp(DEVICE_OBJECT *device_obj, IRP *irp)
ret = STATUS_SUCCESS;
break;
- }
default:
FIXME("Unhandled minor function %#x.\n", stack->MinorFunction);
More information about the wine-cvs
mailing list