diff --git a/sys/Ds4Pdo.cpp b/sys/Ds4Pdo.cpp index fe87634..ae41848 100644 --- a/sys/Ds4Pdo.cpp +++ b/sys/Ds4Pdo.cpp @@ -30,7 +30,6 @@ #include "Ds4Pdo.tmh" #define NTSTRSAFE_LIB #include -#include PCWSTR ViGEm::Bus::Targets::EmulationTargetDS4::_deviceDescription = L"Virtual DualShock 4 Controller"; @@ -142,34 +141,6 @@ NTSTATUS ViGEm::Bus::Targets::EmulationTargetDS4::PdoPrepareDevice(PWDFDEVICE_IN NTSTATUS ViGEm::Bus::Targets::EmulationTargetDS4::PdoPrepareHardware() { - WDF_QUERY_INTERFACE_CONFIG ifaceCfg; - INTERFACE devinterfaceHid; - - devinterfaceHid.Size = sizeof(INTERFACE); - devinterfaceHid.Version = 1; - devinterfaceHid.Context = static_cast(this->_PdoDevice); - - devinterfaceHid.InterfaceReference = WdfDeviceInterfaceReferenceNoOp; - devinterfaceHid.InterfaceDereference = WdfDeviceInterfaceDereferenceNoOp; - - // Expose GUID_DEVINTERFACE_HID so HIDUSB can initialize - WDF_QUERY_INTERFACE_CONFIG_INIT( - &ifaceCfg, - (PINTERFACE)&devinterfaceHid, - &GUID_DEVINTERFACE_HID, - NULL - ); - - NTSTATUS status = WdfDeviceAddQueryInterface(this->_PdoDevice, &ifaceCfg); - if (!NT_SUCCESS(status)) - { - TraceEvents(TRACE_LEVEL_ERROR, - TRACE_DS4, - "WdfDeviceAddQueryInterface failed with status %!STATUS!", - status); - return status; - } - // Set default HID input report (everything zero`d) UCHAR DefaultHidReport[DS4_REPORT_SIZE] = { diff --git a/sys/XusbPdo.cpp b/sys/XusbPdo.cpp index 106bbcd..df33034 100644 --- a/sys/XusbPdo.cpp +++ b/sys/XusbPdo.cpp @@ -29,9 +29,6 @@ #include "XusbPdo.tmh" #define NTSTRSAFE_LIB #include -#include - - #include "busenum.h" @@ -154,87 +151,13 @@ NTSTATUS ViGEm::Bus::Targets::EmulationTargetXUSB::PdoPrepareDevice(PWDFDEVICE_I NTSTATUS ViGEm::Bus::Targets::EmulationTargetXUSB::PdoPrepareHardware() { + NTSTATUS status; WDF_QUERY_INTERFACE_CONFIG ifaceCfg; - INTERFACE dummyIface; - - dummyIface.Size = sizeof(INTERFACE); - dummyIface.Version = 1; - dummyIface.Context = static_cast(this->_PdoDevice); - - dummyIface.InterfaceReference = WdfDeviceInterfaceReferenceNoOp; - dummyIface.InterfaceDereference = WdfDeviceInterfaceDereferenceNoOp; - - /* XUSB.sys will query for the following three "dummy" interfaces - * BUT WONT USE IT so we just expose them to satisfy initialization. (TODO: Check if still valid!) - */ - - // Dummy PNP_LOCATION - - WDF_QUERY_INTERFACE_CONFIG_INIT( - &ifaceCfg, - static_cast(&dummyIface), - &GUID_PNP_LOCATION_INTERFACE, - nullptr - ); - - NTSTATUS status = WdfDeviceAddQueryInterface(this->_PdoDevice, &ifaceCfg); - if (!NT_SUCCESS(status)) - { - TraceEvents(TRACE_LEVEL_ERROR, - TRACE_XUSB, - "Couldn't register PNP_LOCATION dummy interface %!GUID! (WdfDeviceAddQueryInterface failed with status %!STATUS!)", - &GUID_PNP_LOCATION_INTERFACE, - status); - - return status; - } - - // Dummy D3COLD_SUPPORT - - WDF_QUERY_INTERFACE_CONFIG_INIT( - &ifaceCfg, - static_cast(&dummyIface), - &GUID_D3COLD_SUPPORT_INTERFACE, - nullptr - ); - - status = WdfDeviceAddQueryInterface(this->_PdoDevice, &ifaceCfg); - if (!NT_SUCCESS(status)) - { - TraceEvents(TRACE_LEVEL_ERROR, - TRACE_XUSB, - "Couldn't register D3COLD_SUPPORT dummy interface %!GUID! (WdfDeviceAddQueryInterface failed with status %!STATUS!)", - &GUID_D3COLD_SUPPORT_INTERFACE, - status); - - return status; - } - - // Dummy REENUMERATE_SELF_INTERFACE_STANDARD - - WDF_QUERY_INTERFACE_CONFIG_INIT( - &ifaceCfg, - static_cast(&dummyIface), - &GUID_REENUMERATE_SELF_INTERFACE_STANDARD, - nullptr - ); - - status = WdfDeviceAddQueryInterface(this->_PdoDevice, &ifaceCfg); - if (!NT_SUCCESS(status)) - { - TraceEvents(TRACE_LEVEL_ERROR, - TRACE_XUSB, - "Couldn't register REENUM_SELF_STD dummy interface %!GUID! (WdfDeviceAddQueryInterface failed with status %!STATUS!)", - &GUID_REENUMERATE_SELF_INTERFACE_STANDARD, - status); - - return status; - } - + // // Expose USB_BUS_INTERFACE_USBDI_GUID + // - // This interface actually IS used USB_BUS_INTERFACE_USBDI_V1 xusbInterface; xusbInterface.Size = sizeof(USB_BUS_INTERFACE_USBDI_V1);