From 596c09680f7dea95f5b8c3def1afd89a46506c0d Mon Sep 17 00:00:00 2001 From: Jason Hart Date: Mon, 18 Nov 2019 14:59:23 -0500 Subject: [PATCH] Update GUID's, Streamline Tracing, Update licenses --- include/ViGEmBusDriver.h | 2 +- sys/ByteArray.c | 2 +- sys/ByteArray.h | 2 +- sys/Context.h | 2 +- sys/Driver.c | 2 +- sys/Ds4.c | 2 +- sys/Ds4.h | 2 +- sys/Queue.c | 2 +- sys/Queue.h | 2 +- sys/UsbPdo.h | 2 +- sys/Util.h | 2 +- sys/ViGEmBus.inf | 2 +- sys/Xgip.h | 19 ++++++------ sys/Xusb.h | 14 ++++----- sys/busenum.c | 2 +- sys/busenum.h | 2 +- sys/buspdo.c | 2 +- sys/trace.h | 2 +- sys/usbpdo.c | 2 +- sys/util.c | 2 +- sys/xgip.c | 2 +- sys/xusb.c | 64 ++++++++++------------------------------ 22 files changed, 52 insertions(+), 83 deletions(-) diff --git a/include/ViGEmBusDriver.h b/include/ViGEmBusDriver.h index a52aa5f..f7b7241 100644 --- a/include/ViGEmBusDriver.h +++ b/include/ViGEmBusDriver.h @@ -1,6 +1,6 @@ /* * Virtual Gamepad Emulation Framework - Windows kernel-mode bus driver -* Copyright (C) 2016-2018 Benjamin Höglinger-Stelzer +* Copyright (C) 2016-2019 Nefarius Software Solutions e.U. and Contributors * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/sys/ByteArray.c b/sys/ByteArray.c index ce34141..eb9e546 100644 --- a/sys/ByteArray.c +++ b/sys/ByteArray.c @@ -1,6 +1,6 @@ /* * Virtual Gamepad Emulation Framework - Windows kernel-mode bus driver -* Copyright (C) 2016-2018 Benjamin Höglinger-Stelzer +* Copyright (C) 2016-2019 Nefarius Software Solutions e.U. and Contributors * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/sys/ByteArray.h b/sys/ByteArray.h index 90ed605..c367817 100644 --- a/sys/ByteArray.h +++ b/sys/ByteArray.h @@ -1,6 +1,6 @@ /* * Virtual Gamepad Emulation Framework - Windows kernel-mode bus driver -* Copyright (C) 2016-2018 Benjamin Höglinger-Stelzer +* Copyright (C) 2016-2019 Nefarius Software Solutions e.U. and Contributors * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/sys/Context.h b/sys/Context.h index 1ab3439..4cb1451 100644 --- a/sys/Context.h +++ b/sys/Context.h @@ -1,6 +1,6 @@ /* * Virtual Gamepad Emulation Framework - Windows kernel-mode bus driver -* Copyright (C) 2016-2018 Benjamin Höglinger-Stelzer +* Copyright (C) 2016-2019 Nefarius Software Solutions e.U. and Contributors * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/sys/Driver.c b/sys/Driver.c index 4a537af..988f678 100644 --- a/sys/Driver.c +++ b/sys/Driver.c @@ -1,6 +1,6 @@ /* * Virtual Gamepad Emulation Framework - Windows kernel-mode bus driver -* Copyright (C) 2016-2018 Benjamin Höglinger-Stelzer +* Copyright (C) 2016-2019 Nefarius Software Solutions e.U. and Contributors * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/sys/Ds4.c b/sys/Ds4.c index 317bfaa..4b1012d 100644 --- a/sys/Ds4.c +++ b/sys/Ds4.c @@ -1,6 +1,6 @@ /* * Virtual Gamepad Emulation Framework - Windows kernel-mode bus driver -* Copyright (C) 2016-2018 Benjamin Höglinger-Stelzer +* Copyright (C) 2016-2019 Nefarius Software Solutions e.U. and Contributors * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/sys/Ds4.h b/sys/Ds4.h index ca29960..339bd6e 100644 --- a/sys/Ds4.h +++ b/sys/Ds4.h @@ -1,6 +1,6 @@ /* * Virtual Gamepad Emulation Framework - Windows kernel-mode bus driver -* Copyright (C) 2016-2018 Benjamin Höglinger-Stelzer +* Copyright (C) 2016-2019 Nefarius Software Solutions e.U. and Contributors * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/sys/Queue.c b/sys/Queue.c index f78da74..d55668d 100644 --- a/sys/Queue.c +++ b/sys/Queue.c @@ -1,6 +1,6 @@ /* * Virtual Gamepad Emulation Framework - Windows kernel-mode bus driver -* Copyright (C) 2016-2018 Benjamin Höglinger-Stelzer +* Copyright (C) 2016-2019 Nefarius Software Solutions e.U. and Contributors * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/sys/Queue.h b/sys/Queue.h index fcd9b23..26e7668 100644 --- a/sys/Queue.h +++ b/sys/Queue.h @@ -1,6 +1,6 @@ /* * Virtual Gamepad Emulation Framework - Windows kernel-mode bus driver -* Copyright (C) 2016-2018 Benjamin Höglinger-Stelzer +* Copyright (C) 2016-2019 Nefarius Software Solutions e.U. and Contributors * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/sys/UsbPdo.h b/sys/UsbPdo.h index 6e5a8b7..ee3e42d 100644 --- a/sys/UsbPdo.h +++ b/sys/UsbPdo.h @@ -1,6 +1,6 @@ /* * Virtual Gamepad Emulation Framework - Windows kernel-mode bus driver -* Copyright (C) 2016-2018 Benjamin Höglinger-Stelzer +* Copyright (C) 2016-2019 Nefarius Software Solutions e.U. and Contributors * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/sys/Util.h b/sys/Util.h index b5b4415..cd4adbf 100644 --- a/sys/Util.h +++ b/sys/Util.h @@ -1,6 +1,6 @@ /* * Virtual Gamepad Emulation Framework - Windows kernel-mode bus driver -* Copyright (C) 2016-2018 Benjamin Höglinger-Stelzer +* Copyright (C) 2016-2019 Nefarius Software Solutions e.U. and Contributors * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/sys/ViGEmBus.inf b/sys/ViGEmBus.inf index d8ec7bc..f528651 100644 --- a/sys/ViGEmBus.inf +++ b/sys/ViGEmBus.inf @@ -1,5 +1,5 @@ ; Virtual Gamepad Emulation Framework - Windows kernel-mode bus driver -; Copyright (C) 2016-2019 Nefarius Software Solutions e.U. +; Copyright (C) 2016-2019 Nefarius Software Solutions e.U. and Contributors ; ; This program is free software: you can redistribute it and/or modify ; it under the terms of the GNU General Public License as published by diff --git a/sys/Xgip.h b/sys/Xgip.h index 1892e9d..f9e44e4 100644 --- a/sys/Xgip.h +++ b/sys/Xgip.h @@ -1,6 +1,6 @@ /* * Virtual Gamepad Emulation Framework - Windows kernel-mode bus driver -* Copyright (C) 2016-2018 Benjamin Höglinger-Stelzer +* Copyright (C) 2016-2019 Nefarius Software Solutions e.U. and Contributors * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -22,21 +22,22 @@ // have to be exposed by the PDO or else the child devices won't start // -// {70211B0E-0AFB-47DB-AFC1-410BF842497A} +// {70211B0E-0AFB-47DB-AFC1-410BF842497A} PNP_LOCATION_INTERFACE from wdmguid.h being used as a dummy // ReSharper disable once CppMissingIncludeGuard -DEFINE_GUID(GUID_DEVINTERFACE_XGIP_UNKNOWN_0, +DEFINE_GUID(GUID_DEVINTERFACE_XGIP_PNP_LOCATION_DUMMY, 0x70211B0E, 0x0AFB, 0x47DB, 0xAF, 0xC1, 0x41, 0x0B, 0xF8, 0x42, 0x49, 0x7A); -// {B38290E5-3CD0-4F9D-9937-F5FE2B44D47A} -DEFINE_GUID(GUID_DEVINTERFACE_XGIP_UNKNOWN_1, +// {B38290E5-3CD0-4F9D-9937-F5FE2B44D47A} D3COLD_SUPPORT_INTERFACE from wdmguid.h being used as a dummy +DEFINE_GUID(GUID_DEVINTERFACE_XGIP_D3COLD_SUPPORT_DUMMY, 0xB38290E5, 0x3CD0, 0x4F9D, 0x99, 0x37, 0xF5, 0xFE, 0x2B, 0x44, 0xD4, 0x7A); -// {2AEB0243-6A6E-486B-82FC-D815F6B97006} -DEFINE_GUID(GUID_DEVINTERFACE_XGIP_UNKNOWN_2, +// {2AEB0243-6A6E-486B-82FC-D815F6B97006} REENUMERATE_SELF_INTERFACE_STANDARD from wdmguid.h being used as a dummy +DEFINE_GUID(GUID_DEVINTERFACE_XGIP_REENUMERATE_SELF_INTERFACE_STD_DUMMY, 0x2AEB0243, 0x6A6E, 0x486B, 0x82, 0xFC, 0xD8, 0x15, 0xF6, 0xB9, 0x70, 0x06); -// {DC7A8E51-49B3-4A3A-9E81-625205E7D729} -DEFINE_GUID(GUID_DEVINTERFACE_XGIP_UNKNOWN_3, +// {DC7A8E51-49B3-4A3A-9E81-625205E7D729} Seems to be GUID_POWER_THREAD_INTERFACE +// Source: https://github.com/microsoft/Windows-Driver-Frameworks/blob/master/src/framework/shared/irphandlers/pnp/fxpkgpnp.cpp#L63 +DEFINE_GUID(GUID_DEVINTERFACE_XGIP_UNSURE_POWER_THREAD_INTERFACE_DUMMY, 0xDC7A8E51, 0x49B3, 0x4A3A, 0x9E, 0x81, 0x62, 0x52, 0x05, 0xE7, 0xD7, 0x29); // {DEEE98EA-C0A1-42C3-9738-A04606C84E93} diff --git a/sys/Xusb.h b/sys/Xusb.h index 5531192..eb42c66 100644 --- a/sys/Xusb.h +++ b/sys/Xusb.h @@ -1,6 +1,6 @@ /* * Virtual Gamepad Emulation Framework - Windows kernel-mode bus driver -* Copyright (C) 2016-2018 Benjamin Höglinger-Stelzer +* Copyright (C) 2016-2019 Nefarius Software Solutions e.U. and Contributors * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -24,17 +24,17 @@ // TODO: that statement might be obsolete, further testing required // -// {70211B0E-0AFB-47DB-AFC1-410BF842497A} +// {70211B0E-0AFB-47DB-AFC1-410BF842497A} PNP_LOCATION_INTERFACE from wdmguid.h being used as a dummy // ReSharper disable once CppMissingIncludeGuard -DEFINE_GUID(GUID_DEVINTERFACE_XUSB_UNKNOWN_0, +DEFINE_GUID(GUID_DEVINTERFACE_XUSB_PNP_LOCATION_DUMMY, 0x70211B0E, 0x0AFB, 0x47DB, 0xAF, 0xC1, 0x41, 0x0B, 0xF8, 0x42, 0x49, 0x7A); -// {B38290E5-3CD0-4F9D-9937-F5FE2B44D47A} -DEFINE_GUID(GUID_DEVINTERFACE_XUSB_UNKNOWN_1, +// {B38290E5-3CD0-4F9D-9937-F5FE2B44D47A} D3COLD_SUPPORT_INTERFACE from wdmguid.h being used as a dummy +DEFINE_GUID(GUID_DEVINTERFACE_XUSB_D3COLD_SUPPORT_DUMMY, 0xB38290E5, 0x3CD0, 0x4F9D, 0x99, 0x37, 0xF5, 0xFE, 0x2B, 0x44, 0xD4, 0x7A); -// {2AEB0243-6A6E-486B-82FC-D815F6B97006} -DEFINE_GUID(GUID_DEVINTERFACE_XUSB_UNKNOWN_2, +// {2AEB0243-6A6E-486B-82FC-D815F6B97006} REENUMERATE_SELF_INTERFACE_STANDARD from wdmguid.h being used as a dummy +DEFINE_GUID(GUID_DEVINTERFACE_XUSB_REENUMERATE_SELF_INTERFACE_STD_DUMMY, 0x2AEB0243, 0x6A6E, 0x486B, 0x82, 0xFC, 0xD8, 0x15, 0xF6, 0xB9, 0x70, 0x06); #pragma once diff --git a/sys/busenum.c b/sys/busenum.c index 61afd62..1d1a597 100644 --- a/sys/busenum.c +++ b/sys/busenum.c @@ -1,6 +1,6 @@ /* * Virtual Gamepad Emulation Framework - Windows kernel-mode bus driver -* Copyright (C) 2016-2018 Benjamin Höglinger-Stelzer +* Copyright (C) 2016-2019 Nefarius Software Solutions e.U. and Contributors * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/sys/busenum.h b/sys/busenum.h index 3379f2c..a09379e 100644 --- a/sys/busenum.h +++ b/sys/busenum.h @@ -1,6 +1,6 @@ /* * Virtual Gamepad Emulation Framework - Windows kernel-mode bus driver -* Copyright (C) 2016-2018 Benjamin Höglinger-Stelzer +* Copyright (C) 2016-2019 Nefarius Software Solutions e.U. and Contributors * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/sys/buspdo.c b/sys/buspdo.c index 8d261be..b2a6766 100644 --- a/sys/buspdo.c +++ b/sys/buspdo.c @@ -1,6 +1,6 @@ /* * Virtual Gamepad Emulation Framework - Windows kernel-mode bus driver -* Copyright (C) 2016-2018 Benjamin Höglinger-Stelzer +* Copyright (C) 2016-2019 Nefarius Software Solutions e.U. and Contributors * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/sys/trace.h b/sys/trace.h index 8ef7907..a3f8d2f 100644 --- a/sys/trace.h +++ b/sys/trace.h @@ -1,6 +1,6 @@ /* * Virtual Gamepad Emulation Framework - Windows kernel-mode bus driver -* Copyright (C) 2016-2018 Benjamin Höglinger-Stelzer +* Copyright (C) 2016-2019 Nefarius Software Solutions e.U. and Contributors * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/sys/usbpdo.c b/sys/usbpdo.c index 2b4abf9..abb5186 100644 --- a/sys/usbpdo.c +++ b/sys/usbpdo.c @@ -1,6 +1,6 @@ /* * Virtual Gamepad Emulation Framework - Windows kernel-mode bus driver -* Copyright (C) 2016-2018 Benjamin Höglinger-Stelzer +* Copyright (C) 2016-2019 Nefarius Software Solutions e.U. and Contributors * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/sys/util.c b/sys/util.c index 836aca7..ed2b96f 100644 --- a/sys/util.c +++ b/sys/util.c @@ -1,6 +1,6 @@ /* * Virtual Gamepad Emulation Framework - Windows kernel-mode bus driver -* Copyright (C) 2016-2018 Benjamin Höglinger-Stelzer +* Copyright (C) 2016-2019 Nefarius Software Solutions e.U. and Contributors * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/sys/xgip.c b/sys/xgip.c index a721bd0..081ab30 100644 --- a/sys/xgip.c +++ b/sys/xgip.c @@ -1,6 +1,6 @@ /* * Virtual Gamepad Emulation Framework - Windows kernel-mode bus driver -* Copyright (C) 2016-2018 Benjamin Höglinger-Stelzer +* Copyright (C) 2016-2019 Nefarius Software Solutions e.U. and Contributors * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/sys/xusb.c b/sys/xusb.c index 751ad2f..c3b255e 100644 --- a/sys/xusb.c +++ b/sys/xusb.c @@ -1,6 +1,6 @@ /* * Virtual Gamepad Emulation Framework - Windows kernel-mode bus driver -* Copyright (C) 2016-2018 Benjamin Höglinger-Stelzer +* Copyright (C) 2016-2019 Nefarius Software Solutions e.U. and Contributors * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -123,85 +123,53 @@ NTSTATUS Xusb_PrepareHardware(WDFDEVICE Device) dummyIface.InterfaceReference = WdfDeviceInterfaceReferenceNoOp; dummyIface.InterfaceDereference = WdfDeviceInterfaceDereferenceNoOp; - /* XUSB.sys will query for the following three (unknown) interfaces - * BUT WONT USE IT so we just expose them to satisfy initialization. */ + /* 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 0 + // Dummy PNP_LOCATION - WDF_QUERY_INTERFACE_CONFIG_INIT(&ifaceCfg, (PINTERFACE)&dummyIface, &GUID_DEVINTERFACE_XUSB_UNKNOWN_0, NULL); + WDF_QUERY_INTERFACE_CONFIG_INIT(&ifaceCfg, (PINTERFACE)&dummyIface, &GUID_DEVINTERFACE_XUSB_PNP_LOCATION_DUMMY, NULL); status = WdfDeviceAddQueryInterface(Device, &ifaceCfg); if (!NT_SUCCESS(status)) { TraceEvents(TRACE_LEVEL_ERROR, TRACE_XUSB, - "Couldn't register unknown interface GUID: %08X-%04X-%04X-%02X%02X%02X%02X%02X%02X%02X%02X " \ - "(WdfDeviceAddQueryInterface failed with status %!STATUS!)", - GUID_DEVINTERFACE_XUSB_UNKNOWN_0.Data1, - GUID_DEVINTERFACE_XUSB_UNKNOWN_0.Data2, - GUID_DEVINTERFACE_XUSB_UNKNOWN_0.Data3, - GUID_DEVINTERFACE_XUSB_UNKNOWN_0.Data4[0], - GUID_DEVINTERFACE_XUSB_UNKNOWN_0.Data4[1], - GUID_DEVINTERFACE_XUSB_UNKNOWN_0.Data4[2], - GUID_DEVINTERFACE_XUSB_UNKNOWN_0.Data4[3], - GUID_DEVINTERFACE_XUSB_UNKNOWN_0.Data4[4], - GUID_DEVINTERFACE_XUSB_UNKNOWN_0.Data4[5], - GUID_DEVINTERFACE_XUSB_UNKNOWN_0.Data4[6], - GUID_DEVINTERFACE_XUSB_UNKNOWN_0.Data4[7], + "Couldn't register PNP_LOCATION dummy interface %!GUID! (WdfDeviceAddQueryInterface failed with status %!STATUS!)", + &GUID_DEVINTERFACE_XUSB_PNP_LOCATION_DUMMY, status); return status; } - // Dummy 1 + // Dummy D3COLD_SUPPORT - WDF_QUERY_INTERFACE_CONFIG_INIT(&ifaceCfg, (PINTERFACE)&dummyIface, &GUID_DEVINTERFACE_XUSB_UNKNOWN_1, NULL); + WDF_QUERY_INTERFACE_CONFIG_INIT(&ifaceCfg, (PINTERFACE)&dummyIface, &GUID_DEVINTERFACE_XUSB_D3COLD_SUPPORT_DUMMY, NULL); status = WdfDeviceAddQueryInterface(Device, &ifaceCfg); if (!NT_SUCCESS(status)) { TraceEvents(TRACE_LEVEL_ERROR, TRACE_XUSB, - "Couldn't register unknown interface GUID: %08X-%04X-%04X-%02X%02X%02X%02X%02X%02X%02X%02X " \ - "(WdfDeviceAddQueryInterface failed with status %!STATUS!)", - GUID_DEVINTERFACE_XUSB_UNKNOWN_1.Data1, - GUID_DEVINTERFACE_XUSB_UNKNOWN_1.Data2, - GUID_DEVINTERFACE_XUSB_UNKNOWN_1.Data3, - GUID_DEVINTERFACE_XUSB_UNKNOWN_1.Data4[0], - GUID_DEVINTERFACE_XUSB_UNKNOWN_1.Data4[1], - GUID_DEVINTERFACE_XUSB_UNKNOWN_1.Data4[2], - GUID_DEVINTERFACE_XUSB_UNKNOWN_1.Data4[3], - GUID_DEVINTERFACE_XUSB_UNKNOWN_1.Data4[4], - GUID_DEVINTERFACE_XUSB_UNKNOWN_1.Data4[5], - GUID_DEVINTERFACE_XUSB_UNKNOWN_1.Data4[6], - GUID_DEVINTERFACE_XUSB_UNKNOWN_1.Data4[7], + "Couldn't register D3COLD_SUPPORT dummy interface %!GUID! (WdfDeviceAddQueryInterface failed with status %!STATUS!)", + &GUID_DEVINTERFACE_XUSB_D3COLD_SUPPORT_DUMMY, status); return status; } - // Dummy 2 + // Dummy REENUMERATE_SELF_INTERFACE_STANDARD - WDF_QUERY_INTERFACE_CONFIG_INIT(&ifaceCfg, (PINTERFACE)&dummyIface, &GUID_DEVINTERFACE_XUSB_UNKNOWN_2, NULL); + WDF_QUERY_INTERFACE_CONFIG_INIT(&ifaceCfg, (PINTERFACE)&dummyIface, &GUID_DEVINTERFACE_XUSB_REENUMERATE_SELF_INTERFACE_STD_DUMMY, NULL); status = WdfDeviceAddQueryInterface(Device, &ifaceCfg); if (!NT_SUCCESS(status)) { TraceEvents(TRACE_LEVEL_ERROR, TRACE_XUSB, - "Couldn't register unknown interface GUID: %08X-%04X-%04X-%02X%02X%02X%02X%02X%02X%02X%02X " \ - "(WdfDeviceAddQueryInterface failed with status %!STATUS!)", - GUID_DEVINTERFACE_XUSB_UNKNOWN_2.Data1, - GUID_DEVINTERFACE_XUSB_UNKNOWN_2.Data2, - GUID_DEVINTERFACE_XUSB_UNKNOWN_2.Data3, - GUID_DEVINTERFACE_XUSB_UNKNOWN_2.Data4[0], - GUID_DEVINTERFACE_XUSB_UNKNOWN_2.Data4[1], - GUID_DEVINTERFACE_XUSB_UNKNOWN_2.Data4[2], - GUID_DEVINTERFACE_XUSB_UNKNOWN_2.Data4[3], - GUID_DEVINTERFACE_XUSB_UNKNOWN_2.Data4[4], - GUID_DEVINTERFACE_XUSB_UNKNOWN_2.Data4[5], - GUID_DEVINTERFACE_XUSB_UNKNOWN_2.Data4[6], - GUID_DEVINTERFACE_XUSB_UNKNOWN_2.Data4[7], + "Couldn't register REENUM_SELF_STD dummy interface %!GUID! (WdfDeviceAddQueryInterface failed with status %!STATUS!)", + &GUID_DEVINTERFACE_XUSB_REENUMERATE_SELF_INTERFACE_STD_DUMMY, status); return status;