From: Aric Stewart Subject: [PATCH] hidclass.sys: Watch return for STATUS_PENDING not IRP status Message-Id: Date: Fri, 21 Oct 2016 05:58:47 +0200 Signed-off-by: Aric Stewart --- dlls/hidclass.sys/main.c | 4 ++-- dlls/hidclass.sys/pnp.c | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/dlls/hidclass.sys/main.c b/dlls/hidclass.sys/main.c index b9b5a3a..f5a60e9 100644 --- a/dlls/hidclass.sys/main.c +++ b/dlls/hidclass.sys/main.c @@ -112,9 +112,9 @@ NTSTATUS call_minidriver(ULONG code, DEVICE_OBJECT *device, void *in_buff, ULONG buffer, out_size, TRUE, NULL, &irp_status); IoSetCompletionRoutine(irp, internalComplete, event, TRUE, TRUE, TRUE); - IoCallDriver(device, irp); + status = IoCallDriver(device, irp); - if (irp->IoStatus.u.Status == STATUS_PENDING) + if (status == STATUS_PENDING) WaitForSingleObject(event, INFINITE); memcpy(out_buff, buffer, out_size); diff --git a/dlls/hidclass.sys/pnp.c b/dlls/hidclass.sys/pnp.c index 1e607df..5df7692 100644 --- a/dlls/hidclass.sys/pnp.c +++ b/dlls/hidclass.sys/pnp.c @@ -61,8 +61,8 @@ static NTSTATUS get_device_id(DEVICE_OBJECT *device, BUS_QUERY_ID_TYPE type, WCH irpsp->Parameters.QueryId.IdType = type; IoSetCompletionRoutine(irp, internalComplete, event, TRUE, TRUE, TRUE); - IoCallDriver(device, irp); - if (irp->IoStatus.u.Status == STATUS_PENDING) + status = IoCallDriver(device, irp); + if (status == STATUS_PENDING) WaitForSingleObject(event, INFINITE); *id = (WCHAR*)irp->IoStatus.Information;