diff --git a/sys/Ds4Pdo.cpp b/sys/Ds4Pdo.cpp index 095f725..3cbe1c6 100644 --- a/sys/Ds4Pdo.cpp +++ b/sys/Ds4Pdo.cpp @@ -10,18 +10,12 @@ using namespace ViGEm::Bus::Targets; PCWSTR EmulationTargetDS4::_deviceDescription = L"Virtual DualShock 4 Controller"; -NTSTATUS EmulationTargetDS4::PrepareDevice(PWDFDEVICE_INIT DeviceInit, USHORT VID, USHORT PID, +NTSTATUS EmulationTargetDS4::PrepareDevice(PWDFDEVICE_INIT DeviceInit, PUNICODE_STRING DeviceId, PUNICODE_STRING DeviceDescription) { NTSTATUS status; UNICODE_STRING buffer; - - // - // TODO: implement usage! - // - UNREFERENCED_PARAMETER(VID); - UNREFERENCED_PARAMETER(PID); - + // prepare device description status = RtlUnicodeStringInit(DeviceDescription, _deviceDescription); if (!NT_SUCCESS(status)) diff --git a/sys/Ds4Pdo.hpp b/sys/Ds4Pdo.hpp index 3866e68..88cea3f 100644 --- a/sys/Ds4Pdo.hpp +++ b/sys/Ds4Pdo.hpp @@ -13,7 +13,7 @@ namespace ViGEm::Bus::Targets EmulationTargetDS4() = default; ~EmulationTargetDS4() = default; - NTSTATUS PrepareDevice(PWDFDEVICE_INIT DeviceInit, USHORT VID, USHORT PID, + NTSTATUS PrepareDevice(PWDFDEVICE_INIT DeviceInit, PUNICODE_STRING DeviceId, PUNICODE_STRING DeviceDescription) override; NTSTATUS PrepareHardware(WDFDEVICE Device) override; diff --git a/sys/EmulationTargetPDO.hpp b/sys/EmulationTargetPDO.hpp index 9c96983..a5ccea7 100644 --- a/sys/EmulationTargetPDO.hpp +++ b/sys/EmulationTargetPDO.hpp @@ -25,7 +25,7 @@ namespace ViGEm::Bus::Core virtual ~EmulationTargetPDO() = default; - virtual NTSTATUS PrepareDevice(PWDFDEVICE_INIT DeviceInit, USHORT VendorId, USHORT ProductId, + virtual NTSTATUS PrepareDevice(PWDFDEVICE_INIT DeviceInit, PUNICODE_STRING DeviceId, PUNICODE_STRING DeviceDescription) = 0; virtual NTSTATUS PrepareHardware(WDFDEVICE Device) = 0; diff --git a/sys/ViGEmBus.vcxproj b/sys/ViGEmBus.vcxproj index 404f092..dcafc77 100644 --- a/sys/ViGEmBus.vcxproj +++ b/sys/ViGEmBus.vcxproj @@ -122,6 +122,7 @@ true true trace.h + stdcpp17 @@ -139,6 +140,7 @@ true true trace.h + stdcpp17 @@ -153,6 +155,7 @@ true true trace.h + stdcpp17 diff --git a/sys/XusbPdo.cpp b/sys/XusbPdo.cpp index 5b1c5a9..c492915 100644 --- a/sys/XusbPdo.cpp +++ b/sys/XusbPdo.cpp @@ -6,13 +6,15 @@ #include -using namespace ViGEm::Bus::Targets; -PCWSTR EmulationTargetXUSB::_deviceDescription = L"Virtual Xbox 360 Controller"; +PCWSTR ViGEm::Bus::Targets::EmulationTargetXUSB::_deviceDescription = L"Virtual Xbox 360 Controller"; -NTSTATUS EmulationTargetXUSB::PrepareDevice(PWDFDEVICE_INIT DeviceInit, USHORT VID, - USHORT PID, PUNICODE_STRING DeviceId, - PUNICODE_STRING DeviceDescription) +ViGEm::Bus::Targets::EmulationTargetXUSB::EmulationTargetXUSB() : EmulationTargetPDO(0x045E, 0x028E) +{ +} + +NTSTATUS ViGEm::Bus::Targets::EmulationTargetXUSB::PrepareDevice(PWDFDEVICE_INIT DeviceInit, PUNICODE_STRING DeviceId, + PUNICODE_STRING DeviceDescription) { NTSTATUS status; DECLARE_UNICODE_STRING_SIZE(buffer, _maxHardwareIdLength); @@ -29,7 +31,7 @@ NTSTATUS EmulationTargetXUSB::PrepareDevice(PWDFDEVICE_INIT DeviceInit, USHORT V } // Set hardware ID - RtlUnicodeStringPrintf(&buffer, L"USB\\VID_%04X&PID_%04X", VID, PID); + RtlUnicodeStringPrintf(&buffer, L"USB\\VID_%04X&PID_%04X", this->VendorId, this->ProductId); RtlUnicodeStringCopy(DeviceId, &buffer); @@ -96,7 +98,7 @@ NTSTATUS EmulationTargetXUSB::PrepareDevice(PWDFDEVICE_INIT DeviceInit, USHORT V return STATUS_SUCCESS; } -NTSTATUS EmulationTargetXUSB::PrepareHardware(WDFDEVICE Device) +NTSTATUS ViGEm::Bus::Targets::EmulationTargetXUSB::PrepareHardware(WDFDEVICE Device) { WDF_QUERY_INTERFACE_CONFIG ifaceCfg; @@ -214,7 +216,7 @@ NTSTATUS EmulationTargetXUSB::PrepareHardware(WDFDEVICE Device) return STATUS_SUCCESS; } -NTSTATUS EmulationTargetXUSB::InitContext(WDFDEVICE Device) +NTSTATUS ViGEm::Bus::Targets::EmulationTargetXUSB::InitContext(WDFDEVICE Device) { WDF_OBJECT_ATTRIBUTES attributes; PUCHAR blobBuffer; @@ -301,7 +303,7 @@ NTSTATUS EmulationTargetXUSB::InitContext(WDFDEVICE Device) return STATUS_SUCCESS; } -VOID EmulationTargetXUSB::GetConfigurationDescriptorType(PUCHAR Buffer, ULONG Length) +VOID ViGEm::Bus::Targets::EmulationTargetXUSB::GetConfigurationDescriptorType(PUCHAR Buffer, ULONG Length) { UCHAR XusbDescriptorData[XUSB_DESCRIPTOR_SIZE] = { @@ -443,7 +445,7 @@ VOID EmulationTargetXUSB::GetConfigurationDescriptorType(PUCHAR Buffer, ULONG Le RtlCopyBytes(Buffer, XusbDescriptorData, Length); } -VOID EmulationTargetXUSB::GetDeviceDescriptorType(PUSB_DEVICE_DESCRIPTOR pDescriptor) +VOID ViGEm::Bus::Targets::EmulationTargetXUSB::GetDeviceDescriptorType(PUSB_DEVICE_DESCRIPTOR pDescriptor) { pDescriptor->bLength = 0x12; pDescriptor->bDescriptorType = USB_DEVICE_DESCRIPTOR_TYPE; @@ -461,7 +463,7 @@ VOID EmulationTargetXUSB::GetDeviceDescriptorType(PUSB_DEVICE_DESCRIPTOR pDescri pDescriptor->bNumConfigurations = 0x01; } -VOID EmulationTargetXUSB::SelectConfiguration(PUSBD_INTERFACE_INFORMATION pInfo) +VOID ViGEm::Bus::Targets::EmulationTargetXUSB::SelectConfiguration(PUSBD_INTERFACE_INFORMATION pInfo) { TraceEvents(TRACE_LEVEL_VERBOSE, TRACE_XUSB, diff --git a/sys/XusbPdo.hpp b/sys/XusbPdo.hpp index f555f31..8f0bd24 100644 --- a/sys/XusbPdo.hpp +++ b/sys/XusbPdo.hpp @@ -21,10 +21,10 @@ namespace ViGEm::Bus::Targets class EmulationTargetXUSB : public Core::EmulationTargetPDO { public: - EmulationTargetXUSB() = default; + EmulationTargetXUSB(); ~EmulationTargetXUSB() = default; - NTSTATUS PrepareDevice(PWDFDEVICE_INIT DeviceInit, USHORT VID, USHORT PID, + NTSTATUS PrepareDevice(PWDFDEVICE_INIT DeviceInit, PUNICODE_STRING DeviceId, PUNICODE_STRING DeviceDescription) override; NTSTATUS PrepareHardware(WDFDEVICE Device) override;