Claire Girka : hidclass: Improve error handling in get_device_id.

Alexandre Julliard julliard at winehq.org
Mon Jul 25 16:18:24 CDT 2022


Module: wine
Branch: master
Commit: 8ed6b1609cb028ee82c01152e3330f1a4036976b
URL:    https://gitlab.winehq.org/wine/wine/-/commit/8ed6b1609cb028ee82c01152e3330f1a4036976b

Author: Claire Girka <claire at sitedethib.com>
Date:   Tue Jul 12 12:22:43 2022 +0200

hidclass: Improve error handling in get_device_id.

Do not assume the underlying driver will return meaningful data, as it
may not support BusQueryContainerID which will be queried in a next commit.

---

 dlls/hidclass.sys/pnp.c | 9 +++++++--
 1 file changed, 7 insertions(+), 2 deletions(-)

diff --git a/dlls/hidclass.sys/pnp.c b/dlls/hidclass.sys/pnp.c
index 873c55c4a67..d2d3dc25b95 100644
--- a/dlls/hidclass.sys/pnp.c
+++ b/dlls/hidclass.sys/pnp.c
@@ -84,11 +84,16 @@ static NTSTATUS get_device_id(DEVICE_OBJECT *device, BUS_QUERY_ID_TYPE type, WCH
     irpsp->MinorFunction = IRP_MN_QUERY_ID;
     irpsp->Parameters.QueryId.IdType = type;
 
+    irp->IoStatus.Status = STATUS_NOT_SUPPORTED;
     if (IoCallDriver(device, irp) == STATUS_PENDING)
         KeWaitForSingleObject(&event, Executive, KernelMode, FALSE, NULL);
 
-    wcscpy(id, (WCHAR *)irp_status.Information);
-    ExFreePool((WCHAR *)irp_status.Information);
+    if (!irp_status.Status)
+    {
+        wcscpy(id, (WCHAR *)irp_status.Information);
+        ExFreePool((WCHAR *)irp_status.Information);
+    }
+
     return irp_status.Status;
 }
 




More information about the wine-cvs mailing list