32#define IOCTL_INTERNAL_USB_SUBMIT_URB \
33 CTL_CODE(FILE_DEVICE_USB, USB_SUBMIT_URB, METHOD_NEITHER, FILE_ANY_ACCESS)
35#define IOCTL_INTERNAL_USB_RESET_PORT \
36 CTL_CODE(FILE_DEVICE_USB, USB_RESET_PORT, METHOD_NEITHER, FILE_ANY_ACCESS)
38#define IOCTL_INTERNAL_USB_GET_ROOTHUB_PDO \
39 CTL_CODE(FILE_DEVICE_USB, USB_GET_ROOTHUB_PDO, METHOD_NEITHER, FILE_ANY_ACCESS)
41#define USBD_PORT_ENABLED 1
42#define USBD_PORT_CONNECTED 2
44#define IOCTL_INTERNAL_USB_GET_PORT_STATUS \
45 CTL_CODE(FILE_DEVICE_USB, USB_GET_PORT_STATUS, METHOD_NEITHER, FILE_ANY_ACCESS)
47#define IOCTL_INTERNAL_USB_ENABLE_PORT \
48 CTL_CODE(FILE_DEVICE_USB, USB_ENABLE_PORT, METHOD_NEITHER, FILE_ANY_ACCESS)
50#define IOCTL_INTERNAL_USB_GET_HUB_COUNT \
51 CTL_CODE(FILE_DEVICE_USB, USB_GET_HUB_COUNT, METHOD_NEITHER, FILE_ANY_ACCESS)
53#define IOCTL_INTERNAL_USB_CYCLE_PORT \
54 CTL_CODE(FILE_DEVICE_USB, USB_CYCLE_PORT, METHOD_NEITHER, FILE_ANY_ACCESS)
56#define IOCTL_INTERNAL_USB_GET_HUB_NAME \
57 CTL_CODE(FILE_DEVICE_USB, USB_GET_HUB_NAME, METHOD_BUFFERED, FILE_ANY_ACCESS)
59#define IOCTL_INTERNAL_USB_GET_BUS_INFO \
60 CTL_CODE(FILE_DEVICE_USB, USB_GET_BUS_INFO, METHOD_BUFFERED, FILE_ANY_ACCESS)
62#define IOCTL_INTERNAL_USB_GET_CONTROLLER_NAME \
63 CTL_CODE(FILE_DEVICE_USB, USB_GET_CONTROLLER_NAME, METHOD_BUFFERED, FILE_ANY_ACCESS)
65#define IOCTL_INTERNAL_USB_GET_BUSGUID_INFO \
66 CTL_CODE(FILE_DEVICE_USB, USB_GET_BUSGUID_INFO, METHOD_BUFFERED, FILE_ANY_ACCESS)
68#define IOCTL_INTERNAL_USB_GET_PARENT_HUB_INFO \
69 CTL_CODE(FILE_DEVICE_USB, USB_GET_PARENT_HUB_INFO, METHOD_BUFFERED, FILE_ANY_ACCESS)
71#if (_WIN32_WINNT >= 0x0501)
73#define IOCTL_INTERNAL_USB_SUBMIT_IDLE_NOTIFICATION \
74 CTL_CODE(FILE_DEVICE_USB, USB_IDLE_NOTIFICATION, METHOD_NEITHER, FILE_ANY_ACCESS)
76#define IOCTL_INTERNAL_USB_GET_DEVICE_HANDLE \
77 CTL_CODE(FILE_DEVICE_USB, USB_GET_DEVICE_HANDLE, METHOD_NEITHER, FILE_ANY_ACCESS)
81#if (_WIN32_WINNT >= 0x0600)
83#define IOCTL_INTERNAL_USB_NOTIFY_IDLE_READY \
84 CTL_CODE(FILE_DEVICE_USB, USB_IDLE_NOTIFICATION_EX, METHOD_NEITHER, FILE_ANY_ACCESS)
86#define IOCTL_INTERNAL_USB_REQ_GLOBAL_SUSPEND \
87 CTL_CODE(FILE_DEVICE_USB, USB_REQ_GLOBAL_SUSPEND, METHOD_NEITHER, FILE_ANY_ACCESS)
89#define IOCTL_INTERNAL_USB_REQ_GLOBAL_RESUME \
90 CTL_CODE(FILE_DEVICE_USB, USB_REQ_GLOBAL_RESUME, METHOD_NEITHER, FILE_ANY_ACCESS)
93typedef struct _USB_START_FAILDATA {
99} USB_START_FAILDATA, *PUSB_START_FAILDATA;
102#define IOCTL_INTERNAL_USB_RECORD_FAILURE \
103 CTL_CODE(FILE_DEVICE_USB, USB_RECORD_FAILURE, METHOD_NEITHER, FILE_ANY_ACCESS)
105#define IOCTL_INTERNAL_USB_GET_DEVICE_HANDLE_EX \
106 CTL_CODE(FILE_DEVICE_USB, USB_GET_DEVICE_HANDLE_EX, METHOD_NEITHER, FILE_ANY_ACCESS)
108#define IOCTL_INTERNAL_USB_GET_TT_DEVICE_HANDLE \
109 CTL_CODE(FILE_DEVICE_USB, USB_GET_TT_DEVICE_HANDLE, METHOD_NEITHER, FILE_ANY_ACCESS)
111typedef struct _USB_TOPOLOGY_ADDRESS {
113 ULONG PciDeviceNumber;
114 ULONG PciFunctionNumber;
119} USB_TOPOLOGY_ADDRESS, *PUSB_TOPOLOGY_ADDRESS;
121#define IOCTL_INTERNAL_USB_GET_TOPOLOGY_ADDRESS \
122 CTL_CODE(FILE_DEVICE_USB, USB_GET_TOPOLOGY_ADDRESS, METHOD_NEITHER, FILE_ANY_ACCESS)
124#define IOCTL_INTERNAL_USB_GET_DEVICE_CONFIG_INFO \
125 CTL_CODE(FILE_DEVICE_USB, USB_GET_HUB_CONFIG_INFO, METHOD_NEITHER, FILE_ANY_ACCESS)
129#ifndef USB_KERNEL_IOCTL
131#define IOCTL_USB_HCD_GET_STATS_1 \
132 CTL_CODE(FILE_DEVICE_USB, HCD_GET_STATS_1, METHOD_BUFFERED, FILE_ANY_ACCESS)
134#define IOCTL_USB_HCD_GET_STATS_2 \
135 CTL_CODE(FILE_DEVICE_USB, HCD_GET_STATS_2, METHOD_BUFFERED, FILE_ANY_ACCESS)
137#define IOCTL_USB_HCD_DISABLE_PORT \
138 CTL_CODE(FILE_DEVICE_USB, HCD_DISABLE_PORT, METHOD_BUFFERED, FILE_ANY_ACCESS)
140#define IOCTL_USB_HCD_ENABLE_PORT \
141 CTL_CODE(FILE_DEVICE_USB, HCD_ENABLE_PORT, METHOD_BUFFERED, FILE_ANY_ACCESS)
143#define IOCTL_USB_HCD_DISABLE_PORT \
144 CTL_CODE(FILE_DEVICE_USB, HCD_DISABLE_PORT, METHOD_BUFFERED, FILE_ANY_ACCESS)
146#define IOCTL_USB_HCD_ENABLE_PORT \
147 CTL_CODE(FILE_DEVICE_USB, HCD_ENABLE_PORT, METHOD_BUFFERED, FILE_ANY_ACCESS)
149#ifndef IOCTL_USB_DIAGNOSTIC_MODE_OFF
150#define IOCTL_USB_DIAGNOSTIC_MODE_OFF \
151 CTL_CODE(FILE_DEVICE_USB, HCD_DIAGNOSTIC_MODE_OFF, METHOD_BUFFERED, FILE_ANY_ACCESS)
154#ifndef IOCTL_USB_DIAGNOSTIC_MODE_ON
155#define IOCTL_USB_DIAGNOSTIC_MODE_ON \
156 CTL_CODE(FILE_DEVICE_USB, HCD_DIAGNOSTIC_MODE_ON, METHOD_BUFFERED, FILE_ANY_ACCESS)
159#ifndef IOCTL_USB_GET_ROOT_HUB_NAME
160#define IOCTL_USB_GET_ROOT_HUB_NAME \
161 CTL_CODE(FILE_DEVICE_USB, HCD_GET_ROOT_HUB_NAME, METHOD_BUFFERED, FILE_ANY_ACCESS)
164#ifndef IOCTL_GET_HCD_DRIVERKEY_NAME
165#define IOCTL_GET_HCD_DRIVERKEY_NAME \
166 CTL_CODE(FILE_DEVICE_USB, HCD_GET_DRIVERKEY_NAME, METHOD_BUFFERED, FILE_ANY_ACCESS)
169#define IOCTL_USB_GET_NODE_INFORMATION \
170 CTL_CODE(FILE_DEVICE_USB, USB_GET_NODE_INFORMATION, METHOD_BUFFERED, FILE_ANY_ACCESS)
172#define IOCTL_USB_GET_NODE_CONNECTION_INFORMATION \
173 CTL_CODE(FILE_DEVICE_USB, USB_GET_NODE_CONNECTION_INFORMATION, METHOD_BUFFERED, FILE_ANY_ACCESS)
175#define IOCTL_USB_GET_DESCRIPTOR_FROM_NODE_CONNECTION \
176 CTL_CODE(FILE_DEVICE_USB, USB_GET_DESCRIPTOR_FROM_NODE_CONNECTION, METHOD_BUFFERED, FILE_ANY_ACCESS)
178#define IOCTL_USB_GET_NODE_CONNECTION_NAME \
179 CTL_CODE(FILE_DEVICE_USB, USB_GET_NODE_CONNECTION_NAME, METHOD_BUFFERED, FILE_ANY_ACCESS)
181#define IOCTL_USB_DIAG_IGNORE_HUBS_ON \
182 CTL_CODE(FILE_DEVICE_USB, USB_DIAG_IGNORE_HUBS_ON, METHOD_BUFFERED, FILE_ANY_ACCESS)
184#define IOCTL_USB_DIAG_IGNORE_HUBS_OFF \
185 CTL_CODE(FILE_DEVICE_USB, USB_DIAG_IGNORE_HUBS_OFF, METHOD_BUFFERED, FILE_ANY_ACCESS)
187#define IOCTL_USB_GET_NODE_CONNECTION_DRIVERKEY_NAME \
188 CTL_CODE(FILE_DEVICE_USB, USB_GET_NODE_CONNECTION_DRIVERKEY_NAME, METHOD_BUFFERED, FILE_ANY_ACCESS)
190#if (_WIN32_WINNT >= 0x0501)
192#define IOCTL_USB_GET_HUB_CAPABILITIES \
193 CTL_CODE(FILE_DEVICE_USB, USB_GET_HUB_CAPABILITIES, METHOD_BUFFERED, FILE_ANY_ACCESS)
195#define IOCTL_USB_HUB_CYCLE_PORT \
196 CTL_CODE(FILE_DEVICE_USB, USB_HUB_CYCLE_PORT, METHOD_BUFFERED, FILE_ANY_ACCESS)
198#define IOCTL_USB_GET_NODE_CONNECTION_ATTRIBUTES \
199 CTL_CODE(FILE_DEVICE_USB, USB_GET_NODE_CONNECTION_ATTRIBUTES, METHOD_BUFFERED, FILE_ANY_ACCESS)
201#define IOCTL_USB_GET_NODE_CONNECTION_INFORMATION_EX \
202 CTL_CODE(FILE_DEVICE_USB, USB_GET_NODE_CONNECTION_INFORMATION_EX, METHOD_BUFFERED, FILE_ANY_ACCESS)
206#if (_WIN32_WINNT >= 0x0600)
208#define IOCTL_USB_RESET_HUB \
209 CTL_CODE(FILE_DEVICE_USB, USB_RESET_HUB, METHOD_BUFFERED, FILE_ANY_ACCESS)
211#define IOCTL_USB_GET_HUB_CAPABILITIES_EX \
212 CTL_CODE(FILE_DEVICE_USB, USB_GET_HUB_CAPABILITIES_EX, METHOD_BUFFERED, FILE_ANY_ACCESS)
245#if (_WIN32_WINNT >= 0x0600)
255 DeviceHubNestedTooDeeply,
261#elif (_WIN32_WINNT >= 0x0501)
271 DeviceHubNestedTooDeeply,
340#if (_WIN32_WINNT >= 0x0501)
342typedef struct _USB_HUB_CAPABILITIES {
343 ULONG HubIs2xCapable:1;
344} USB_HUB_CAPABILITIES, *PUSB_HUB_CAPABILITIES;
346typedef struct _USB_NODE_CONNECTION_ATTRIBUTES {
347 ULONG ConnectionIndex;
349 ULONG PortAttributes;
350} USB_NODE_CONNECTION_ATTRIBUTES, *PUSB_NODE_CONNECTION_ATTRIBUTES;
352typedef struct _USB_NODE_CONNECTION_INFORMATION_EX {
353 ULONG ConnectionIndex;
355 UCHAR CurrentConfigurationValue;
359 ULONG NumberOfOpenPipes;
362} USB_NODE_CONNECTION_INFORMATION_EX, *PUSB_NODE_CONNECTION_INFORMATION_EX;
368#if (_WIN32_WINNT >= 0x0600)
370typedef union _USB_HUB_CAP_FLAGS {
373 ULONG HubIsHighSpeedCapable:1;
374 ULONG HubIsHighSpeed:1;
375 ULONG HubIsMultiTtCapable:1;
376 ULONG HubIsMultiTt:1;
378 ULONG HubIsArmedWakeOnConnect:1;
379 ULONG HubIsBusPowered:1;
380 ULONG ReservedMBZ:25;
382} USB_HUB_CAP_FLAGS, *PUSB_HUB_CAP_FLAGS;
386typedef struct _USB_HUB_CAPABILITIES_EX {
387 USB_HUB_CAP_FLAGS CapabilityFlags;
388} USB_HUB_CAPABILITIES_EX, *PUSB_HUB_CAPABILITIES_EX;
390typedef struct _USB_CYCLE_PORT_PARAMS {
391 ULONG ConnectionIndex;
392 ULONG StatusReturned;
393} USB_CYCLE_PORT_PARAMS, *PUSB_CYCLE_PORT_PARAMS;
395typedef struct _USB_ID_STRING {
400} USB_ID_STRING, *PUSB_ID_STRING;
402typedef struct _USB_HUB_DEVICE_UXD_SETTINGS {
406 ULONG DeleteOnShutdown;
407 ULONG DeleteOnReload;
408 ULONG DeleteOnDisconnect;
410} USB_HUB_DEVICE_UXD_SETTINGS, *PUSB_HUB_DEVICE_UXD_SETTINGS;
412typedef struct _HUB_DEVICE_CONFIG_INFO_V1 {
415 USB_HUB_CAP_FLAGS HubFlags;
416 USB_ID_STRING HardwareIds;
417 USB_ID_STRING CompatibleIds;
420 USB_HUB_DEVICE_UXD_SETTINGS UxdSettings;
421} HUB_DEVICE_CONFIG_INFO, *PHUB_DEVICE_CONFIG_INFO;
480#define WMI_USB_DRIVER_INFORMATION 0
481#define WMI_USB_DRIVER_NOTIFICATION 1
482#define WMI_USB_POWER_DEVICE_ENABLE 2
483#define WMI_USB_HUB_NODE_INFORMATION 4
485#define WMI_USB_PERFORMANCE_INFORMATION 1
486#define WMI_USB_DEVICE_NODE_INFORMATION 2
488#if (_WIN32_WINNT >= 0x0501)
502 ModernDeviceInLegacyHub
548#if (_WIN32_WINNT >= 0x0600)
550#define USB_NODE_INFO_SIG 'USBN'
552typedef enum _USB_WMI_DEVICE_NODE_TYPE {
557} USB_WMI_DEVICE_NODE_TYPE, *PUSB_WMI_DEVICE_NODE_TYPE;
559typedef struct _USB_DEVICE_STATE {
561 ULONG DeviceStarted:1;
562} USB_DEVICE_STATE, *PUSB_DEVICE_STATE;
564typedef struct _USB_HUB_PORT_INFORMATION {
568 ULONG ConnectionIndex;
570} USB_HUB_PORT_INFORMATION, *PUSB_HUB_PORT_INFORMATION;
572typedef struct _USB_HUB_DEVICE_INFO {
578 USB_HUB_CAPABILITIES HubCapabilities;
579 ULONG NumberOfHubPorts;
581} USB_HUB_DEVICE_INFO, *PUSB_HUB_DEVICE_INFO;
583typedef struct _USB_COMPOSITE_FUNCTION_INFO {
584 UCHAR FunctionNumber;
585 UCHAR BaseInterfaceNumber;
586 UCHAR NumberOfInterfaces;
588} USB_COMPOSITE_FUNCTION_INFO, *PUSB_COMPOSITE_FUNCTION_INFO;
590typedef struct _USB_COMPOSITE_DEVICE_INFO {
593 UCHAR CurrentConfigurationValue;
594 UCHAR NumberOfFunctions;
596} USB_COMPOSITE_DEVICE_INFO, *PUSB_COMPOSITE_DEVICE_INFO;
598typedef struct _USB_CONTROLLER_DEVICE_INFO {
602 ULONG NumberOfRootPorts;
603 ULONG HcFeatureFlags;
604} USB_CONTROLLER_DEVICE_INFO, *PUSB_CONTROLLER_DEVICE_INFO;
606typedef struct _USB_DEVICE_INFO {
610 UCHAR CurrentConfigurationValue;
613 ULONG ConnectionIndex;
615 WCHAR PnpHardwareId[128];
616 WCHAR PnpCompatibleId[128];
617 WCHAR SerialNumberId[128];
618 WCHAR PnpDeviceDescription[128];
619 ULONG NumberOfOpenPipes;
621} USB_DEVICE_INFO, *PUSB_DEVICE_INFO;
623typedef struct _USB_DEVICE_NODE_INFO {
630 USB_DEVICE_INFO UsbDeviceInfo;
631 USB_HUB_DEVICE_INFO HubDeviceInfo;
632 USB_COMPOSITE_DEVICE_INFO CompositeDeviceInfo;
633 USB_CONTROLLER_DEVICE_INFO ControllerDeviceInfo;
634 UCHAR DeviceInformation[4];
636} USB_DEVICE_NODE_INFO, *PUSB_DEVICE_NODE_INFO;
638typedef struct _USB_DEVICE_PERFORMANCE_INFO {
640 ULONG ControlDataBytes;
642 ULONG InterruptBytes;
644 ULONG ControlUrbCount;
646 ULONG InterruptUrbCount;
647 ULONG AllocedInterrupt[6];
649 ULONG Total32secBandwidth;
650 ULONG TotalTtBandwidth;
653 ULONG TotalIsoLatency;
654 ULONG DroppedIsoPackets;
655 ULONG TransferErrors;
656 ULONG PciInterruptCount;
658 ULONG HcAsyncIdleState;
659 ULONG HcAsyncCacheFlushCount;
660 ULONG HcPeriodicIdleState;
661 ULONG HcPeriodicCacheFlushCount;
662} USB_DEVICE_PERFORMANCE_INFO, *PUSB_DEVICE_PERFORMANCE_INFO;
char * Pad(char *Str, char PadChar, ULONG Length)
_In_ PUSBD_PIPE_INFORMATION _In_ USB_DEVICE_SPEED DeviceSpeed
_In_ PUSB_DEVICE_HANDLE _Out_ PUSHORT DeviceAddress
_In_ ULONG _In_ ULONG _In_ ULONG Length
const KSDEVICE_DESCRIPTOR DeviceDescriptor
USHORT SmallestUrbPacketCount
ULONG IsoBytesTransferred
USHORT IsoPacketNotAccesed
USHORT DoubleBufferedPackets
USHORT MaxInterruptLatency
USHORT LargestUrbPacketCount
USHORT InternalHcErrorCount
USHORT DataOverrunErrorCount
USHORT ScheduleOverrunCount
USHORT BufferOverrunErrorCount
USB_NOTIFICATION_TYPE NotificationType
USB_NOTIFICATION_TYPE NotificationType
ULONG ControllerNameLength
USB_NOTIFICATION_TYPE NotificationType
ULONG EnumerationFailReason
struct _USB_DESCRIPTOR_REQUEST::@3271 SetupPacket
WCHAR DriverKeyName[ANYSIZE_ARRAY]
WCHAR HubName[ANYSIZE_ARRAY]
WCHAR DriverKeyName[ANYSIZE_ARRAY]
WCHAR NodeName[ANYSIZE_ARRAY]
USB_NOTIFICATION_TYPE NotificationType
USB_ENDPOINT_DESCRIPTOR EndpointDescriptor
WCHAR RootHubName[ANYSIZE_ARRAY]
enum _USB_DEVICE_SPEED USB_DEVICE_SPEED
struct _USB_HUB_NAME USB_HUB_NAME
struct _USB_NODE_CONNECTION_NAME * PUSB_NODE_CONNECTION_NAME
struct _USB_HUB_INFORMATION USB_HUB_INFORMATION
struct _USB_PIPE_INFO * PUSB_PIPE_INFO
struct _USB_NODE_CONNECTION_DRIVERKEY_NAME USB_NODE_CONNECTION_DRIVERKEY_NAME
struct _USB_CONNECTION_NOTIFICATION * PUSB_CONNECTION_NOTIFICATION
struct _USB_DESCRIPTOR_REQUEST USB_DESCRIPTOR_REQUEST
struct _USB_HCD_DRIVERKEY_NAME USB_HCD_DRIVERKEY_NAME
struct _USB_NODE_INFORMATION USB_NODE_INFORMATION
struct _USB_NODE_CONNECTION_INFORMATION * PUSB_NODE_CONNECTION_INFORMATION
struct _USB_NODE_CONNECTION_INFORMATION USB_NODE_CONNECTION_INFORMATION
struct _USB_NODE_CONNECTION_DRIVERKEY_NAME * PUSB_NODE_CONNECTION_DRIVERKEY_NAME
struct _HCD_ISO_STAT_COUNTERS HCD_ISO_STAT_COUNTERS
struct _HCD_STAT_INFORMATION_1 * PHCD_STAT_INFORMATION_1
struct _USB_ROOT_HUB_NAME USB_ROOT_HUB_NAME
enum _USB_NOTIFICATION_TYPE USB_NOTIFICATION_TYPE
struct _USB_PIPE_INFO USB_PIPE_INFO
enum _USB_HUB_NODE USB_HUB_NODE
enum _USB_CONNECTION_STATUS USB_CONNECTION_STATUS
struct _USB_HUB_NAME * PUSB_HUB_NAME
struct _USB_NODE_CONNECTION_NAME USB_NODE_CONNECTION_NAME
struct _USB_ROOT_HUB_NAME * PUSB_ROOT_HUB_NAME
struct _USB_HUB_INFORMATION * PUSB_HUB_INFORMATION
struct _USB_NODE_INFORMATION * PUSB_NODE_INFORMATION
struct _USB_NOTIFICATION USB_NOTIFICATION
struct _USB_ACQUIRE_INFO * PUSB_ACQUIRE_INFO
struct _USB_NOTIFICATION * PUSB_NOTIFICATION
struct _USB_MI_PARENT_INFORMATION USB_MI_PARENT_INFORMATION
struct _USB_BUS_NOTIFICATION * PUSB_BUS_NOTIFICATION
struct _USB_BUS_NOTIFICATION USB_BUS_NOTIFICATION
struct _USB_HCD_DRIVERKEY_NAME * PUSB_HCD_DRIVERKEY_NAME
struct _HCD_STAT_COUNTERS * PHCD_STAT_COUNTERS
struct _HCD_STAT_INFORMATION_2 HCD_STAT_INFORMATION_2
struct _USB_DESCRIPTOR_REQUEST * PUSB_DESCRIPTOR_REQUEST
struct _USB_MI_PARENT_INFORMATION * PUSB_MI_PARENT_INFORMATION
struct _HCD_STAT_INFORMATION_2 * PHCD_STAT_INFORMATION_2
struct _USB_CONNECTION_NOTIFICATION USB_CONNECTION_NOTIFICATION
@ DeviceFailedEnumeration
@ DeviceCausedOvercurrent
@ DeviceNotEnoughBandwidth
struct _HCD_STAT_INFORMATION_1 HCD_STAT_INFORMATION_1
enum _USB_CONNECTION_STATUS * PUSB_CONNECTION_STATUS
struct _HCD_ISO_STAT_COUNTERS * PHCD_ISO_STAT_COUNTERS
struct _HCD_STAT_COUNTERS HCD_STAT_COUNTERS
struct _USB_ACQUIRE_INFO USB_ACQUIRE_INFO
_In_ WDFDEVICE _Out_ PWDF_DEVICE_STATE DeviceState
_Must_inspect_result_ _In_ WDFDEVICE _In_ LPCGUID _Out_ PINTERFACE _In_ USHORT _In_ USHORT Version
_Must_inspect_result_ _In_ PWDFDEVICE_INIT _In_ PCUNICODE_STRING DeviceDescription
_In_ NTSTATUS _In_ USBD_STATUS UsbdStatus
_Must_inspect_result_ _In_ WDFDEVICE _In_opt_ PWDF_OBJECT_ATTRIBUTES _Out_ WDFUSBDEVICE * UsbDevice
_Reserved_ PVOID Reserved
_In_ ULONG _In_ PHYSICAL_ADDRESS BusAddress