Rémi Bernon : wineusb.sys: Handle IRP_MN_SURPRISE_REMOVAL and set removed flag.
Alexandre Julliard
julliard at winehq.org
Thu Jul 1 15:53:50 CDT 2021
Module: wine
Branch: master
Commit: 84c9206ca75a71622d061c63215230dd37673761
URL: https://source.winehq.org/git/wine.git/?a=commit;h=84c9206ca75a71622d061c63215230dd37673761
Author: Rémi Bernon <rbernon at codeweavers.com>
Date: Thu Jul 1 09:51:23 2021 +0200
wineusb.sys: Handle IRP_MN_SURPRISE_REMOVAL and set removed flag.
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 | 21 +++++++++------------
1 file changed, 9 insertions(+), 12 deletions(-)
diff --git a/dlls/wineusb.sys/wineusb.c b/dlls/wineusb.sys/wineusb.c
index 8fb1d75f121..a72095409ff 100644
--- a/dlls/wineusb.sys/wineusb.c
+++ b/dlls/wineusb.sys/wineusb.c
@@ -145,7 +145,6 @@ static void remove_usb_device(libusb_device *libusb_device)
if (device->libusb_device == libusb_device)
{
list_remove(&device->entry);
- device->removed = TRUE;
break;
}
}
@@ -402,26 +401,24 @@ static NTSTATUS pdo_pnp(DEVICE_OBJECT *device_obj, IRP *irp)
}
case IRP_MN_START_DEVICE:
- case IRP_MN_SURPRISE_REMOVAL:
ret = STATUS_SUCCESS;
break;
- case IRP_MN_REMOVE_DEVICE:
+ case IRP_MN_SURPRISE_REMOVAL:
EnterCriticalSection(&wineusb_cs);
remove_pending_irps(device);
+ device->removed = TRUE;
LeaveCriticalSection(&wineusb_cs);
+ ret = STATUS_SUCCESS;
+ break;
- if (device->removed)
- {
- libusb_unref_device(device->libusb_device);
- libusb_close(device->handle);
+ case IRP_MN_REMOVE_DEVICE:
+ remove_pending_irps(device);
- irp->IoStatus.Status = STATUS_SUCCESS;
- IoCompleteRequest(irp, IO_NO_INCREMENT);
- IoDeleteDevice(device->device_obj);
- return STATUS_SUCCESS;
- }
+ libusb_unref_device(device->libusb_device);
+ libusb_close(device->handle);
+ IoDeleteDevice(device->device_obj);
ret = STATUS_SUCCESS;
break;
More information about the wine-cvs
mailing list