diff --git a/ViGEmBus.rc b/ViGEmBus.rc index 8b88af8..92bf9fe 100644 --- a/ViGEmBus.rc +++ b/ViGEmBus.rc @@ -51,8 +51,8 @@ END // VS_VERSION_INFO VERSIONINFO - FILEVERSION 1,13,1,0 - PRODUCTVERSION 1,13,1,0 + FILEVERSION 1,13,2,0 + PRODUCTVERSION 1,13,2,0 FILEFLAGSMASK 0x3fL #ifdef _DEBUG FILEFLAGS 0x1L @@ -69,12 +69,12 @@ BEGIN BEGIN VALUE "CompanyName", "Benjamin Höglinger-Stelzer" VALUE "FileDescription", "Virtual Gamepad Emulation Bus Driver" -VALUE "FileVersion", "1.13.1.0" +VALUE "FileVersion", "1.13.2.0" VALUE "InternalName", "Virtual Gamepad Emulation Bus Driver" VALUE "LegalCopyright", "Copyright (C) Benjamin Höglinger-Stelzer 2016" VALUE "OriginalFilename", "vigembus.sys" VALUE "ProductName", "Virtual Gamepad Emulation Bus Driver" -VALUE "ProductVersion", "1.13.1.0" +VALUE "ProductVersion", "1.13.2.0" END END BLOCK "VarFileInfo" diff --git a/ViGEmBus.vcxproj b/ViGEmBus.vcxproj index 6a9ac15..e927bde 100644 --- a/ViGEmBus.vcxproj +++ b/ViGEmBus.vcxproj @@ -182,7 +182,7 @@ - 1.13.1.0 + 1.13.2.0 $(DDK_LIB_PATH)ntstrsafe.lib;$(DDK_LIB_PATH)wdmsec.lib;%(AdditionalDependencies) @@ -190,7 +190,7 @@ - 1.13.1.0 + 1.13.2.0 $(DDK_LIB_PATH)ntstrsafe.lib;$(DDK_LIB_PATH)wdmsec.lib;%(AdditionalDependencies) @@ -198,7 +198,7 @@ - 1.13.1.0 + 1.13.2.0 $(DDK_LIB_PATH)ntstrsafe.lib;$(DDK_LIB_PATH)wdmsec.lib;%(AdditionalDependencies) @@ -206,7 +206,7 @@ - 1.13.1.0 + 1.13.2.0 $(DDK_LIB_PATH)ntstrsafe.lib;$(DDK_LIB_PATH)wdmsec.lib;%(AdditionalDependencies) @@ -214,7 +214,7 @@ - 1.13.1.0 + 1.13.2.0 $(DDK_LIB_PATH)ntstrsafe.lib;$(DDK_LIB_PATH)wdmsec.lib;%(AdditionalDependencies) @@ -222,7 +222,7 @@ - 1.13.1.0 + 1.13.2.0 $(DDK_LIB_PATH)ntstrsafe.lib;$(DDK_LIB_PATH)wdmsec.lib;%(AdditionalDependencies) @@ -230,7 +230,7 @@ - 1.13.1.0 + 1.13.2.0 $(DDK_LIB_PATH)ntstrsafe.lib;$(DDK_LIB_PATH)wdmsec.lib;%(AdditionalDependencies) @@ -238,7 +238,7 @@ - 1.13.1.0 + 1.13.2.0 $(DDK_LIB_PATH)ntstrsafe.lib;$(DDK_LIB_PATH)wdmsec.lib;%(AdditionalDependencies) diff --git a/buspdo.c b/buspdo.c index 6347409..2c79010 100644 --- a/buspdo.c +++ b/buspdo.c @@ -355,22 +355,25 @@ NTSTATUS Bus_CreatePdo( #pragma region Create Queues & Locks + WDF_OBJECT_ATTRIBUTES_INIT(&attributes); + attributes.ParentObject = hChild; + // Create and assign queue for incoming interrupt transfer WDF_IO_QUEUE_CONFIG_INIT(&usbInQueueConfig, WdfIoQueueDispatchManual); status = WdfIoQueueCreate(Device, &usbInQueueConfig, WDF_NO_OBJECT_ATTRIBUTES, &pdoData->PendingUsbInRequests); if (!NT_SUCCESS(status)) { - KdPrint((DRIVERNAME "WdfIoQueueCreate failed 0x%x\n", status)); - return status; + KdPrint((DRIVERNAME "WdfIoQueueCreate (PendingUsbInRequests) failed 0x%x\n", status)); + goto endCreatePdo; } - + // Create lock for queue status = WdfSpinLockCreate(&attributes, &pdoData->PendingUsbInRequestsLock); if (!NT_SUCCESS(status)) { - KdPrint((DRIVERNAME "WdfSpinLockCreate failed 0x%x\n", status)); - return status; + KdPrint((DRIVERNAME "WdfSpinLockCreate (PendingUsbInRequestsLock) failed 0x%x\n", status)); + goto endCreatePdo; } // Create and assign queue for user-land notification requests @@ -379,16 +382,16 @@ NTSTATUS Bus_CreatePdo( status = WdfIoQueueCreate(Device, ¬ificationsQueueConfig, WDF_NO_OBJECT_ATTRIBUTES, &pdoData->PendingNotificationRequests); if (!NT_SUCCESS(status)) { - KdPrint((DRIVERNAME "WdfIoQueueCreate failed 0x%x\n", status)); - return status; + KdPrint((DRIVERNAME "WdfIoQueueCreate (PendingNotificationRequests) failed 0x%x\n", status)); + goto endCreatePdo; } // Create lock for queue status = WdfSpinLockCreate(&attributes, &pdoData->PendingNotificationRequestsLock); if (!NT_SUCCESS(status)) { - KdPrint((DRIVERNAME "WdfSpinLockCreate failed 0x%x\n", status)); - return status; + KdPrint((DRIVERNAME "WdfSpinLockCreate (PendingNotificationRequestsLock) failed 0x%x\n", status)); + goto endCreatePdo; } #pragma endregion @@ -443,6 +446,9 @@ NTSTATUS Bus_CreatePdo( #pragma endregion endCreatePdo: + KdPrint((DRIVERNAME "BUS_PDO_REPORT_STAGE_RESULT Stage: ViGEmPdoCreate, Serial: 0x%X, Status: 0x%X (%d)\n", + Description->SerialNo, status, NT_SUCCESS(status))); + BUS_PDO_REPORT_STAGE_RESULT(busInterface, ViGEmPdoCreate, Description->SerialNo, status); return status; } diff --git a/xusb.c b/xusb.c index 13ba725..25bb378 100644 --- a/xusb.c +++ b/xusb.c @@ -224,7 +224,7 @@ NTSTATUS Xusb_AssignPdoContext(WDFDEVICE Device, PPDO_IDENTIFICATION_DESCRIPTION status = WdfIoQueueCreate(Device, &holdingInQueueConfig, WDF_NO_OBJECT_ATTRIBUTES, &xusb->HoldingUsbInRequests); if (!NT_SUCCESS(status)) { - KdPrint((DRIVERNAME "WdfIoQueueCreate failed 0x%x\n", status)); + KdPrint((DRIVERNAME "WdfIoQueueCreate (HoldingUsbInRequests) failed 0x%x\n", status)); return status; } @@ -232,7 +232,7 @@ NTSTATUS Xusb_AssignPdoContext(WDFDEVICE Device, PPDO_IDENTIFICATION_DESCRIPTION status = WdfSpinLockCreate(&attributes, &xusb->HoldingUsbInRequestsLock); if (!NT_SUCCESS(status)) { - KdPrint((DRIVERNAME "WdfSpinLockCreate failed 0x%x\n", status)); + KdPrint((DRIVERNAME "WdfSpinLockCreate (HoldingUsbInRequestsLock) failed 0x%x\n", status)); return status; }