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;
}