123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597 |
- /**
- * usbioctl.h
- *
- * USB IOCTL interface.#ifndef __USBIOCTL_H__
- *
- * This file is part of the mingw-w64 runtime package.
- * No warranty is given; refer to the file DISCLAIMER within this package.
- *
- * This file is based on the ReactOS PSDK file usbdi.h header.
- * Original contributed by Casper S. Hornstrup <chorns@users.sourceforge.net>
- *
- * Added winapi-family check, Windows 8 additions by Kai Tietz.
- */
- #ifndef __USBIOCTL_H__
- #define __USBIOCTL_H__
- #include <minwindef.h>
- #include <winapifamily.h>
- #if WINAPI_FAMILY_PARTITION (WINAPI_PARTITION_DESKTOP)
- #ifndef FAR
- #define FAR
- #endif
- #include "usb200.h"
- #include "usbiodef.h"
- #define IOCTL_INTERNAL_USB_SUBMIT_URB CTL_CODE (FILE_DEVICE_USB, USB_SUBMIT_URB, METHOD_NEITHER, FILE_ANY_ACCESS)
- #define IOCTL_INTERNAL_USB_RESET_PORT CTL_CODE (FILE_DEVICE_USB, USB_RESET_PORT, METHOD_NEITHER, FILE_ANY_ACCESS)
- #define IOCTL_INTERNAL_USB_GET_ROOTHUB_PDO CTL_CODE (FILE_DEVICE_USB, USB_GET_ROOTHUB_PDO, METHOD_NEITHER, FILE_ANY_ACCESS)
- #define USBD_PORT_ENABLED 0x00000001
- #define USBD_PORT_CONNECTED 0x00000002
- #define IOCTL_INTERNAL_USB_GET_PORT_STATUS CTL_CODE (FILE_DEVICE_USB, USB_GET_PORT_STATUS, METHOD_NEITHER, FILE_ANY_ACCESS)
- #define IOCTL_INTERNAL_USB_ENABLE_PORT CTL_CODE (FILE_DEVICE_USB, USB_ENABLE_PORT, METHOD_NEITHER, FILE_ANY_ACCESS)
- #define IOCTL_INTERNAL_USB_GET_HUB_COUNT CTL_CODE (FILE_DEVICE_USB, USB_GET_HUB_COUNT, METHOD_NEITHER, FILE_ANY_ACCESS)
- #define IOCTL_INTERNAL_USB_CYCLE_PORT CTL_CODE (FILE_DEVICE_USB, USB_CYCLE_PORT, METHOD_NEITHER, FILE_ANY_ACCESS)
- #define IOCTL_INTERNAL_USB_GET_HUB_NAME CTL_CODE (FILE_DEVICE_USB, USB_GET_HUB_NAME, METHOD_BUFFERED, FILE_ANY_ACCESS)
- #define IOCTL_INTERNAL_USB_GET_BUS_INFO CTL_CODE (FILE_DEVICE_USB, USB_GET_BUS_INFO, METHOD_BUFFERED, FILE_ANY_ACCESS)
- #define IOCTL_INTERNAL_USB_GET_CONTROLLER_NAME CTL_CODE (FILE_DEVICE_USB, USB_GET_CONTROLLER_NAME, METHOD_BUFFERED, FILE_ANY_ACCESS)
- #define IOCTL_INTERNAL_USB_GET_BUSGUID_INFO CTL_CODE (FILE_DEVICE_USB, USB_GET_BUSGUID_INFO, METHOD_BUFFERED, FILE_ANY_ACCESS)
- #define IOCTL_INTERNAL_USB_GET_PARENT_HUB_INFO CTL_CODE (FILE_DEVICE_USB, USB_GET_PARENT_HUB_INFO, METHOD_BUFFERED, FILE_ANY_ACCESS)
- #define IOCTL_INTERNAL_USB_SUBMIT_IDLE_NOTIFICATION CTL_CODE (FILE_DEVICE_USB, USB_IDLE_NOTIFICATION, METHOD_NEITHER, FILE_ANY_ACCESS)
- #define IOCTL_INTERNAL_USB_GET_DEVICE_HANDLE CTL_CODE (FILE_DEVICE_USB, USB_GET_DEVICE_HANDLE, METHOD_NEITHER, FILE_ANY_ACCESS)
- #if _WIN32_WINNT >= 0x0600
- #define IOCTL_INTERNAL_USB_NOTIFY_IDLE_READY CTL_CODE (FILE_DEVICE_USB, USB_IDLE_NOTIFICATION_EX, METHOD_NEITHER, FILE_ANY_ACCESS)
- #define IOCTL_INTERNAL_USB_REQ_GLOBAL_SUSPEND CTL_CODE (FILE_DEVICE_USB, USB_REQ_GLOBAL_SUSPEND, METHOD_NEITHER, FILE_ANY_ACCESS)
- #define IOCTL_INTERNAL_USB_REQ_GLOBAL_RESUME CTL_CODE (FILE_DEVICE_USB, USB_REQ_GLOBAL_RESUME, METHOD_NEITHER, FILE_ANY_ACCESS)
- #ifdef USB20_API
- typedef struct _USB_START_FAILDATA {
- ULONG LengthInBytes;
- NTSTATUS NtStatus;
- USBD_STATUS UsbdStatus;
- ULONG ConnectStatus;
- UCHAR DriverData[4];
- } USB_START_FAILDATA,*PUSB_START_FAILDATA;
- #endif
- #define IOCTL_INTERNAL_USB_RECORD_FAILURE CTL_CODE (FILE_DEVICE_USB, USB_RECORD_FAILURE, METHOD_NEITHER, FILE_ANY_ACCESS)
- #define IOCTL_INTERNAL_USB_GET_DEVICE_HANDLE_EX CTL_CODE (FILE_DEVICE_USB, USB_GET_DEVICE_HANDLE_EX, METHOD_NEITHER, FILE_ANY_ACCESS)
- #define IOCTL_INTERNAL_USB_GET_TT_DEVICE_HANDLE CTL_CODE (FILE_DEVICE_USB, USB_GET_TT_DEVICE_HANDLE, METHOD_NEITHER, FILE_ANY_ACCESS)
- typedef struct _USB_TOPOLOGY_ADDRESS {
- ULONG PciBusNumber;
- ULONG PciDeviceNumber;
- ULONG PciFunctionNumber;
- ULONG Reserved;
- USHORT RootHubPortNumber;
- USHORT HubPortNumber[5];
- USHORT Reserved2;
- } USB_TOPOLOGY_ADDRESS,*PUSB_TOPOLOGY_ADDRESS;
- #define IOCTL_INTERNAL_USB_GET_TOPOLOGY_ADDRESS CTL_CODE (FILE_DEVICE_USB, USB_GET_TOPOLOGY_ADDRESS, METHOD_NEITHER, FILE_ANY_ACCESS)
- #define IOCTL_INTERNAL_USB_GET_DEVICE_CONFIG_INFO CTL_CODE (FILE_DEVICE_USB, USB_GET_HUB_CONFIG_INFO, METHOD_NEITHER, FILE_ANY_ACCESS)
- #endif
- #if NTDDI_VERSION >= 0x06020000
- #define IOCTL_INTERNAL_USB_REGISTER_COMPOSITE_DEVICE CTL_CODE (FILE_DEVICE_USBEX, USB_REGISTER_COMPOSITE_DEVICE, METHOD_NEITHER, FILE_ANY_ACCESS)
- #define IOCTL_INTERNAL_USB_UNREGISTER_COMPOSITE_DEVICE CTL_CODE (FILE_DEVICE_USBEX, USB_UNREGISTER_COMPOSITE_DEVICE, METHOD_NEITHER, FILE_ANY_ACCESS)
- #define IOCTL_INTERNAL_USB_REQUEST_REMOTE_WAKE_NOTIFICATION CTL_CODE (FILE_DEVICE_USBEX, USB_REQUEST_REMOTE_WAKE_NOTIFICATION, METHOD_NEITHER, FILE_ANY_ACCESS)
- #endif
- #ifndef USB_KERNEL_IOCTL
- #define IOCTL_USB_HCD_GET_STATS_1 CTL_CODE (FILE_DEVICE_USB, HCD_GET_STATS_1, METHOD_BUFFERED, FILE_ANY_ACCESS)
- #define IOCTL_USB_HCD_GET_STATS_2 CTL_CODE (FILE_DEVICE_USB, HCD_GET_STATS_2, METHOD_BUFFERED, FILE_ANY_ACCESS)
- #define IOCTL_USB_HCD_DISABLE_PORT CTL_CODE (FILE_DEVICE_USB, HCD_DISABLE_PORT, METHOD_BUFFERED, FILE_ANY_ACCESS)
- #define IOCTL_USB_HCD_ENABLE_PORT CTL_CODE (FILE_DEVICE_USB, HCD_ENABLE_PORT, METHOD_BUFFERED, FILE_ANY_ACCESS)
- #ifndef IOCTL_USB_DIAGNOSTIC_MODE_ON
- #define IOCTL_USB_DIAGNOSTIC_MODE_ON CTL_CODE (FILE_DEVICE_USB, HCD_DIAGNOSTIC_MODE_ON, METHOD_BUFFERED, FILE_ANY_ACCESS)
- #endif
- #ifndef IOCTL_USB_DIAGNOSTIC_MODE_OFF
- #define IOCTL_USB_DIAGNOSTIC_MODE_OFF CTL_CODE (FILE_DEVICE_USB, HCD_DIAGNOSTIC_MODE_OFF, METHOD_BUFFERED, FILE_ANY_ACCESS)
- #endif
- #ifndef IOCTL_USB_GET_ROOT_HUB_NAME
- #define IOCTL_USB_GET_ROOT_HUB_NAME CTL_CODE (FILE_DEVICE_USB, HCD_GET_ROOT_HUB_NAME, METHOD_BUFFERED, FILE_ANY_ACCESS)
- #endif
- #ifndef IOCTL_GET_HCD_DRIVERKEY_NAME
- #define IOCTL_GET_HCD_DRIVERKEY_NAME CTL_CODE (FILE_DEVICE_USB, HCD_GET_DRIVERKEY_NAME, METHOD_BUFFERED, FILE_ANY_ACCESS)
- #endif
- #define IOCTL_USB_GET_NODE_INFORMATION CTL_CODE (FILE_DEVICE_USB, USB_GET_NODE_INFORMATION, METHOD_BUFFERED, FILE_ANY_ACCESS)
- #define IOCTL_USB_GET_NODE_CONNECTION_INFORMATION CTL_CODE (FILE_DEVICE_USB, USB_GET_NODE_CONNECTION_INFORMATION, METHOD_BUFFERED, FILE_ANY_ACCESS)
- #define IOCTL_USB_GET_DESCRIPTOR_FROM_NODE_CONNECTION CTL_CODE (FILE_DEVICE_USB, USB_GET_DESCRIPTOR_FROM_NODE_CONNECTION, METHOD_BUFFERED, FILE_ANY_ACCESS)
- #define IOCTL_USB_GET_NODE_CONNECTION_NAME CTL_CODE (FILE_DEVICE_USB, USB_GET_NODE_CONNECTION_NAME, METHOD_BUFFERED, FILE_ANY_ACCESS)
- #define IOCTL_USB_DIAG_IGNORE_HUBS_ON CTL_CODE (FILE_DEVICE_USB, USB_DIAG_IGNORE_HUBS_ON, METHOD_BUFFERED, FILE_ANY_ACCESS)
- #define IOCTL_USB_DIAG_IGNORE_HUBS_OFF CTL_CODE (FILE_DEVICE_USB, USB_DIAG_IGNORE_HUBS_OFF, METHOD_BUFFERED, FILE_ANY_ACCESS)
- #define IOCTL_USB_GET_NODE_CONNECTION_DRIVERKEY_NAME CTL_CODE (FILE_DEVICE_USB, USB_GET_NODE_CONNECTION_DRIVERKEY_NAME, METHOD_BUFFERED, FILE_ANY_ACCESS)
- #define IOCTL_USB_GET_HUB_CAPABILITIES CTL_CODE (FILE_DEVICE_USB, USB_GET_HUB_CAPABILITIES, METHOD_BUFFERED, FILE_ANY_ACCESS)
- #define IOCTL_USB_HUB_CYCLE_PORT CTL_CODE (FILE_DEVICE_USB, USB_HUB_CYCLE_PORT, METHOD_BUFFERED, FILE_ANY_ACCESS)
- #define IOCTL_USB_GET_NODE_CONNECTION_ATTRIBUTES CTL_CODE (FILE_DEVICE_USB, USB_GET_NODE_CONNECTION_ATTRIBUTES, METHOD_BUFFERED, FILE_ANY_ACCESS)
- #define IOCTL_USB_GET_NODE_CONNECTION_INFORMATION_EX CTL_CODE (FILE_DEVICE_USB, USB_GET_NODE_CONNECTION_INFORMATION_EX, METHOD_BUFFERED, FILE_ANY_ACCESS)
- #if _WIN32_WINNT >= 0x0600
- #define IOCTL_USB_RESET_HUB CTL_CODE (FILE_DEVICE_USB, USB_RESET_HUB, METHOD_BUFFERED, FILE_ANY_ACCESS)
- #define IOCTL_USB_GET_HUB_CAPABILITIES_EX CTL_CODE (FILE_DEVICE_USB, USB_GET_HUB_CAPABILITIES_EX, METHOD_BUFFERED, FILE_ANY_ACCESS)
- #endif
- #if NTDDI_VERSION >= 0x06020000
- #define IOCTL_USB_GET_HUB_INFORMATION_EX CTL_CODE (FILE_DEVICE_USB, USB_GET_HUB_INFORMATION_EX, METHOD_BUFFERED, FILE_ANY_ACCESS)
- #define IOCTL_USB_GET_PORT_CONNECTOR_PROPERTIES CTL_CODE (FILE_DEVICE_USB, USB_GET_PORT_CONNECTOR_PROPERTIES, METHOD_BUFFERED, FILE_ANY_ACCESS)
- #define IOCTL_USB_GET_NODE_CONNECTION_INFORMATION_EX_V2 CTL_CODE (FILE_DEVICE_USB, USB_GET_NODE_CONNECTION_INFORMATION_EX_V2, METHOD_BUFFERED, FILE_ANY_ACCESS)
- #endif
- #include <pshpack1.h>
- typedef enum _USB_HUB_NODE {
- UsbHub,
- UsbMIParent
- } USB_HUB_NODE;
- typedef struct _USB_HUB_INFORMATION {
- USB_HUB_DESCRIPTOR HubDescriptor;
- BOOLEAN HubIsBusPowered;
- } USB_HUB_INFORMATION,*PUSB_HUB_INFORMATION;
- typedef struct _USB_MI_PARENT_INFORMATION {
- ULONG NumberOfInterfaces;
- } USB_MI_PARENT_INFORMATION,*PUSB_MI_PARENT_INFORMATION;
- typedef struct _USB_NODE_INFORMATION {
- USB_HUB_NODE NodeType;
- union {
- USB_HUB_INFORMATION HubInformation;
- USB_MI_PARENT_INFORMATION MiParentInformation;
- } u;
- } USB_NODE_INFORMATION,*PUSB_NODE_INFORMATION;
- typedef struct _USB_PIPE_INFO {
- USB_ENDPOINT_DESCRIPTOR EndpointDescriptor;
- ULONG ScheduleOffset;
- } USB_PIPE_INFO,*PUSB_PIPE_INFO;
- #if _WIN32_WINNT >= 0x0600
- typedef enum _USB_CONNECTION_STATUS {
- NoDeviceConnected,
- DeviceConnected,
- DeviceFailedEnumeration,
- DeviceGeneralFailure,
- DeviceCausedOvercurrent,
- DeviceNotEnoughPower,
- DeviceNotEnoughBandwidth,
- DeviceHubNestedTooDeeply,
- DeviceInLegacyHub,
- DeviceEnumerating,
- DeviceReset
- } USB_CONNECTION_STATUS,*PUSB_CONNECTION_STATUS;
- #else
- typedef enum _USB_CONNECTION_STATUS {
- NoDeviceConnected,
- DeviceConnected,
- DeviceFailedEnumeration,
- DeviceGeneralFailure,
- DeviceCausedOvercurrent,
- DeviceNotEnoughPower,
- DeviceNotEnoughBandwidth,
- DeviceHubNestedTooDeeply,
- DeviceInLegacyHub
- } USB_CONNECTION_STATUS,*PUSB_CONNECTION_STATUS;
- #endif
- typedef struct _USB_NODE_CONNECTION_INFORMATION {
- ULONG ConnectionIndex;
- USB_DEVICE_DESCRIPTOR DeviceDescriptor;
- UCHAR CurrentConfigurationValue;
- BOOLEAN LowSpeed;
- BOOLEAN DeviceIsHub;
- USHORT DeviceAddress;
- ULONG NumberOfOpenPipes;
- USB_CONNECTION_STATUS ConnectionStatus;
- USB_PIPE_INFO PipeList[0];
- } USB_NODE_CONNECTION_INFORMATION,*PUSB_NODE_CONNECTION_INFORMATION;
- typedef struct _USB_NODE_CONNECTION_DRIVERKEY_NAME {
- ULONG ConnectionIndex;
- ULONG ActualLength;
- WCHAR DriverKeyName[1];
- } USB_NODE_CONNECTION_DRIVERKEY_NAME,*PUSB_NODE_CONNECTION_DRIVERKEY_NAME;
- typedef struct _USB_NODE_CONNECTION_NAME {
- ULONG ConnectionIndex;
- ULONG ActualLength;
- WCHAR NodeName[1];
- } USB_NODE_CONNECTION_NAME,*PUSB_NODE_CONNECTION_NAME;
- typedef struct _USB_HUB_NAME {
- ULONG ActualLength;
- WCHAR HubName[1];
- } USB_HUB_NAME,*PUSB_HUB_NAME;
- typedef struct _USB_ROOT_HUB_NAME {
- ULONG ActualLength;
- WCHAR RootHubName[1];
- } USB_ROOT_HUB_NAME,*PUSB_ROOT_HUB_NAME;
- typedef struct _USB_HCD_DRIVERKEY_NAME {
- ULONG ActualLength;
- WCHAR DriverKeyName[1];
- } USB_HCD_DRIVERKEY_NAME,*PUSB_HCD_DRIVERKEY_NAME;
- typedef struct _USB_DESCRIPTOR_REQUEST {
- ULONG ConnectionIndex;
- struct {
- UCHAR bmRequest;
- UCHAR bRequest;
- USHORT wValue;
- USHORT wIndex;
- USHORT wLength;
- } SetupPacket;
- UCHAR Data[0];
- } USB_DESCRIPTOR_REQUEST,*PUSB_DESCRIPTOR_REQUEST;
- typedef struct _USB_HUB_CAPABILITIES {
- ULONG HubIs2xCapable:1;
- } USB_HUB_CAPABILITIES,*PUSB_HUB_CAPABILITIES;
- typedef struct _USB_NODE_CONNECTION_ATTRIBUTES {
- ULONG ConnectionIndex;
- USB_CONNECTION_STATUS ConnectionStatus;
- ULONG PortAttributes;
- } USB_NODE_CONNECTION_ATTRIBUTES,*PUSB_NODE_CONNECTION_ATTRIBUTES;
- typedef struct _USB_NODE_CONNECTION_INFORMATION_EX {
- ULONG ConnectionIndex;
- USB_DEVICE_DESCRIPTOR DeviceDescriptor;
- UCHAR CurrentConfigurationValue;
- UCHAR Speed;
- BOOLEAN DeviceIsHub;
- USHORT DeviceAddress;
- ULONG NumberOfOpenPipes;
- USB_CONNECTION_STATUS ConnectionStatus;
- USB_PIPE_INFO PipeList[0];
- } USB_NODE_CONNECTION_INFORMATION_EX,*PUSB_NODE_CONNECTION_INFORMATION_EX;
- #if _WIN32_WINNT >= 0x0600
- typedef union _USB_HUB_CAP_FLAGS {
- ULONG ul;
- __C89_NAMELESS struct {
- ULONG HubIsHighSpeedCapable:1;
- ULONG HubIsHighSpeed:1;
- ULONG HubIsMultiTtCapable:1;
- ULONG HubIsMultiTt:1;
- ULONG HubIsRoot:1;
- ULONG HubIsArmedWakeOnConnect:1;
- ULONG HubIsBusPowered:1;
- ULONG ReservedMBZ:25;
- };
- } USB_HUB_CAP_FLAGS,*PUSB_HUB_CAP_FLAGS;
- typedef struct _USB_HUB_CAPABILITIES_EX {
- USB_HUB_CAP_FLAGS CapabilityFlags;
- } USB_HUB_CAPABILITIES_EX,*PUSB_HUB_CAPABILITIES_EX;
- typedef struct _USB_CYCLE_PORT_PARAMS {
- ULONG ConnectionIndex;
- ULONG StatusReturned;
- } USB_CYCLE_PORT_PARAMS,*PUSB_CYCLE_PORT_PARAMS;
- typedef struct _USB_ID_STRING {
- USHORT LanguageId;
- USHORT Pad;
- ULONG LengthInBytes;
- PWCHAR Buffer;
- } USB_ID_STRING,*PUSB_ID_STRING;
- typedef struct _USB_HUB_DEVICE_UXD_SETTINGS {
- ULONG Version;
- GUID PnpGuid;
- GUID OwnerGuid;
- ULONG DeleteOnShutdown;
- ULONG DeleteOnReload;
- ULONG DeleteOnDisconnect;
- ULONG Reserved[5];
- } USB_HUB_DEVICE_UXD_SETTINGS,*PUSB_HUB_DEVICE_UXD_SETTINGS;
- typedef struct _HUB_DEVICE_CONFIG_INFO_V1 {
- ULONG Version;
- ULONG Length;
- USB_HUB_CAP_FLAGS HubFlags;
- USB_ID_STRING HardwareIds;
- USB_ID_STRING CompatibleIds;
- USB_ID_STRING DeviceDescription;
- ULONG Reserved[19];
- USB_HUB_DEVICE_UXD_SETTINGS UxdSettings;
- } HUB_DEVICE_CONFIG_INFO,*PHUB_DEVICE_CONFIG_INFO;
- #endif
- typedef struct _HCD_STAT_COUNTERS {
- ULONG BytesTransferred;
- USHORT IsoMissedCount;
- USHORT DataOverrunErrorCount;
- USHORT CrcErrorCount;
- USHORT ScheduleOverrunCount;
- USHORT TimeoutErrorCount;
- USHORT InternalHcErrorCount;
- USHORT BufferOverrunErrorCount;
- USHORT SWErrorCount;
- USHORT StallPidCount;
- USHORT PortDisableCount;
- } HCD_STAT_COUNTERS,*PHCD_STAT_COUNTERS;
- typedef struct _HCD_ISO_STAT_COUNTERS {
- USHORT LateUrbs;
- USHORT DoubleBufferedPackets;
- USHORT TransfersCF_5ms;
- USHORT TransfersCF_2ms;
- USHORT TransfersCF_1ms;
- USHORT MaxInterruptLatency;
- USHORT BadStartFrame;
- USHORT StaleUrbs;
- USHORT IsoPacketNotAccesed;
- USHORT IsoPacketHWError;
- USHORT SmallestUrbPacketCount;
- USHORT LargestUrbPacketCount;
- USHORT IsoCRC_Error;
- USHORT IsoOVERRUN_Error;
- USHORT IsoINTERNAL_Error;
- USHORT IsoUNKNOWN_Error;
- ULONG IsoBytesTransferred;
- USHORT LateMissedCount;
- USHORT HWIsoMissedCount;
- ULONG Reserved7[8];
- } HCD_ISO_STAT_COUNTERS,*PHCD_ISO_STAT_COUNTERS;
- typedef struct _HCD_STAT_INFORMATION_1 {
- ULONG Reserved1;
- ULONG Reserved2;
- ULONG ResetCounters;
- LARGE_INTEGER TimeRead;
- HCD_STAT_COUNTERS Counters;
- } HCD_STAT_INFORMATION_1,*PHCD_STAT_INFORMATION_1;
- typedef struct _HCD_STAT_INFORMATION_2 {
- ULONG Reserved1;
- ULONG Reserved2;
- ULONG ResetCounters;
- LARGE_INTEGER TimeRead;
- LONG LockedMemoryUsed;
- HCD_STAT_COUNTERS Counters;
- HCD_ISO_STAT_COUNTERS IsoCounters;
- } HCD_STAT_INFORMATION_2,*PHCD_STAT_INFORMATION_2;
- #define WMI_USB_DRIVER_INFORMATION 0
- #define WMI_USB_DRIVER_NOTIFICATION 1
- #define WMI_USB_POWER_DEVICE_ENABLE 2
- #define WMI_USB_HUB_NODE_INFORMATION 4
- #define WMI_USB_PERFORMANCE_INFORMATION 1
- #define WMI_USB_DEVICE_NODE_INFORMATION 2
- typedef enum _USB_NOTIFICATION_TYPE {
- EnumerationFailure = 0,
- InsufficentBandwidth,
- InsufficentPower,
- OverCurrent,
- ResetOvercurrent,
- AcquireBusInfo,
- AcquireHubName,
- AcquireControllerName,
- HubOvercurrent,
- HubPowerChange,
- HubNestedTooDeeply,
- ModernDeviceInLegacyHub
- } USB_NOTIFICATION_TYPE;
- typedef struct _USB_NOTIFICATION {
- USB_NOTIFICATION_TYPE NotificationType;
- } USB_NOTIFICATION,*PUSB_NOTIFICATION;
- typedef struct _USB_CONNECTION_NOTIFICATION {
- USB_NOTIFICATION_TYPE NotificationType;
- ULONG ConnectionNumber;
- ULONG RequestedBandwidth;
- ULONG EnumerationFailReason;
- ULONG PowerRequested;
- ULONG HubNameLength;
- } USB_CONNECTION_NOTIFICATION,*PUSB_CONNECTION_NOTIFICATION;
- typedef struct _USB_BUS_NOTIFICATION {
- USB_NOTIFICATION_TYPE NotificationType;
- ULONG TotalBandwidth;
- ULONG ConsumedBandwidth;
- ULONG ControllerNameLength;
- } USB_BUS_NOTIFICATION,*PUSB_BUS_NOTIFICATION;
- typedef struct _USB_ACQUIRE_INFO {
- USB_NOTIFICATION_TYPE NotificationType;
- ULONG TotalSize;
- WCHAR Buffer[1];
- } USB_ACQUIRE_INFO,*PUSB_ACQUIRE_INFO;
- #if _WIN32_WINNT >= 0x0600
- #define USB_NODE_INFO_SIG 'USBN'
- typedef enum _USB_WMI_DEVICE_NODE_TYPE {
- UsbDevice,
- HubDevice,
- CompositeDevice,
- UsbController
- } USB_WMI_DEVICE_NODE_TYPE,*PUSB_WMI_DEVICE_NODE_TYPE;
- typedef struct _USB_DEVICE_STATE {
- ULONG DeviceConnected:1;
- ULONG DeviceStarted:1;
- } USB_DEVICE_STATE,*PUSB_DEVICE_STATE;
- typedef struct _USB_HUB_PORT_INFORMATION {
- USB_DEVICE_STATE DeviceState;
- USHORT PortNumber;
- USHORT DeviceAddress;
- ULONG ConnectionIndex;
- USB_CONNECTION_STATUS ConnectionStatus;
- } USB_HUB_PORT_INFORMATION,*PUSB_HUB_PORT_INFORMATION;
- typedef struct _USB_HUB_DEVICE_INFO {
- USB_HUB_DESCRIPTOR HubDescriptor;
- ULONG HubNumber;
- USHORT DeviceAddress;
- BOOLEAN HubIsSelfPowered;
- BOOLEAN HubIsRootHub;
- USB_HUB_CAPABILITIES HubCapabilities;
- ULONG NumberOfHubPorts;
- USB_HUB_PORT_INFORMATION PortInfo[1];
- } USB_HUB_DEVICE_INFO,*PUSB_HUB_DEVICE_INFO;
- typedef struct _USB_COMPOSITE_FUNCTION_INFO {
- UCHAR FunctionNumber;
- UCHAR BaseInterfaceNumber;
- UCHAR NumberOfInterfaces;
- BOOLEAN FunctionIsIdle;
- } USB_COMPOSITE_FUNCTION_INFO,*PUSB_COMPOSITE_FUNCTION_INFO;
- typedef struct _USB_COMPOSITE_DEVICE_INFO {
- USB_DEVICE_DESCRIPTOR DeviceDescriptor;
- USB_CONFIGURATION_DESCRIPTOR CurrentConfigDescriptor;
- UCHAR CurrentConfigurationValue;
- UCHAR NumberOfFunctions;
- USB_COMPOSITE_FUNCTION_INFO FunctionInfo[1];
- } USB_COMPOSITE_DEVICE_INFO,*PUSB_COMPOSITE_DEVICE_INFO;
- typedef struct _USB_CONTROLLER_DEVICE_INFO {
- ULONG PciVendorId;
- ULONG PciDeviceId;
- ULONG PciRevision;
- ULONG NumberOfRootPorts;
- ULONG HcFeatureFlags;
- } USB_CONTROLLER_DEVICE_INFO,*PUSB_CONTROLLER_DEVICE_INFO;
- typedef struct _USB_DEVICE_INFO {
- USB_DEVICE_STATE DeviceState;
- USHORT PortNumber;
- USB_DEVICE_DESCRIPTOR DeviceDescriptor;
- UCHAR CurrentConfigurationValue;
- USB_DEVICE_SPEED Speed;
- USHORT DeviceAddress;
- ULONG ConnectionIndex;
- USB_CONNECTION_STATUS ConnectionStatus;
- WCHAR PnpHardwareId[128];
- WCHAR PnpCompatibleId[128];
- WCHAR SerialNumberId[128];
- WCHAR PnpDeviceDescription[128];
- ULONG NumberOfOpenPipes;
- USB_PIPE_INFO PipeList[1];
- } USB_DEVICE_INFO,*PUSB_DEVICE_INFO;
- typedef struct _USB_DEVICE_NODE_INFO {
- ULONG Sig;
- ULONG LengthInBytes;
- WCHAR DeviceDescription[40];
- USB_WMI_DEVICE_NODE_TYPE NodeType;
- USB_TOPOLOGY_ADDRESS BusAddress;
- __C89_NAMELESS union {
- USB_DEVICE_INFO UsbDeviceInfo;
- USB_HUB_DEVICE_INFO HubDeviceInfo;
- USB_COMPOSITE_DEVICE_INFO CompositeDeviceInfo;
- USB_CONTROLLER_DEVICE_INFO ControllerDeviceInfo;
- UCHAR DeviceInformation[4];
- };
- } USB_DEVICE_NODE_INFO,*PUSB_DEVICE_NODE_INFO;
- typedef struct _USB_DEVICE_PERFORMANCE_INFO {
- ULONG BulkBytes;
- ULONG ControlDataBytes;
- ULONG IsoBytes;
- ULONG InterruptBytes;
- ULONG BulkUrbCount;
- ULONG ControlUrbCount;
- ULONG IsoUrbCount;
- ULONG InterruptUrbCount;
- ULONG AllocedInterrupt[6];
- ULONG AllocedIso;
- ULONG Total32secBandwidth;
- ULONG TotalTtBandwidth;
- WCHAR DeviceDescription[60];
- USB_DEVICE_SPEED DeviceSpeed;
- ULONG TotalIsoLatency;
- ULONG DroppedIsoPackets;
- ULONG TransferErrors;
- ULONG PciInterruptCount;
- ULONG HcIdleState;
- ULONG HcAsyncIdleState;
- ULONG HcAsyncCacheFlushCount;
- ULONG HcPeriodicIdleState;
- ULONG HcPeriodicCacheFlushCount;
- } USB_DEVICE_PERFORMANCE_INFO,*PUSB_DEVICE_PERFORMANCE_INFO;
- #endif
- #if NTDDI_VERSION >= 0x06020000
- typedef enum _USB_HUB_TYPE {
- UsbRootHub = 1,
- Usb20Hub = 2,
- Usb30Hub = 3
- } USB_HUB_TYPE;
- typedef struct _USB_HUB_INFORMATION_EX {
- USB_HUB_TYPE HubType;
- USHORT HighestPortNumber;
- union {
- USB_HUB_DESCRIPTOR UsbHubDescriptor;
- USB_30_HUB_DESCRIPTOR Usb30HubDescriptor;
- } u;
- } USB_HUB_INFORMATION_EX,*PUSB_HUB_INFORMATION_EX;
- typedef union _USB_PORT_PROPERTIES {
- ULONG ul;
- __C89_NAMELESS struct {
- ULONG PortIsUserConnectable :1;
- ULONG PortIsDebugCapable :1;
- ULONG ReservedMBZ :30;
- };
- } USB_PORT_PROPERTIES,*PUSB_PORT_PROPERTIES;
- typedef struct _USB_PORT_CONNECTOR_PROPERTIES {
- ULONG ConnectionIndex;
- ULONG ActualLength;
- USB_PORT_PROPERTIES UsbPortProperties;
- USHORT CompanionIndex;
- USHORT CompanionPortNumber;
- WCHAR CompanionHubSymbolicLinkName[1];
- } USB_PORT_CONNECTOR_PROPERTIES,*PUSB_PORT_CONNECTOR_PROPERTIES;
- typedef union _USB_PROTOCOLS {
- ULONG ul;
- __C89_NAMELESS struct {
- ULONG Usb110 :1;
- ULONG Usb200 :1;
- ULONG Usb300 :1;
- ULONG ReservedMBZ :29;
- };
- } USB_PROTOCOLS,*PUSB_PROTOCOLS;
- typedef union _USB_NODE_CONNECTION_INFORMATION_EX_V2_FLAGS {
- ULONG ul;
- __C89_NAMELESS struct {
- ULONG DeviceIsOperatingAtSuperSpeedOrHigher :1;
- ULONG DeviceIsSuperSpeedCapableOrHigher :1;
- ULONG DeviceIsOperatingAtSuperSpeedPlusOrHigher :1;
- ULONG DeviceIsSuperSpeedPlusCapableOrHigher :1;
- ULONG ReservedMBZ :28;
- };
- } USB_NODE_CONNECTION_INFORMATION_EX_V2_FLAGS,*PUSB_NODE_CONNECTION_INFORMATION_EX_V2_FLAGS;
- typedef struct _USB_NODE_CONNECTION_INFORMATION_EX_V2 {
- ULONG ConnectionIndex;
- ULONG Length;
- USB_PROTOCOLS SupportedUsbProtocols;
- USB_NODE_CONNECTION_INFORMATION_EX_V2_FLAGS Flags;
- } USB_NODE_CONNECTION_INFORMATION_EX_V2,*PUSB_NODE_CONNECTION_INFORMATION_EX_V2;
- #endif
- #include <poppack.h>
- #endif
- #endif
- #endif
|