📄 usbioctl.h
字号:
} 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; /* hub, mi parent */
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;
typedef enum _USB_CONNECTION_STATUS {
NoDeviceConnected,
DeviceConnected,
/* failure codes, these map to fail reasons */
DeviceFailedEnumeration,
DeviceGeneralFailure,
DeviceCausedOvercurrent,
DeviceNotEnoughPower,
DeviceNotEnoughBandwidth
} USB_CONNECTION_STATUS, *PUSB_CONNECTION_STATUS;
typedef struct _USB_NODE_CONNECTION_INFORMATION {
ULONG ConnectionIndex;
/* usb device descriptor returned by this device
during enumeration */
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; /* INPUT */
ULONG ActualLength; /* OUTPUT */
/* unicode name for the devnode. */
WCHAR DriverKeyName[1]; /* OUTPUT */
} USB_NODE_CONNECTION_DRIVERKEY_NAME, *PUSB_NODE_CONNECTION_DRIVERKEY_NAME;
typedef struct _USB_NODE_CONNECTION_NAME {
ULONG ConnectionIndex; /* INPUT */
ULONG ActualLength; /* OUTPUT */
/* unicode symbolic name for this node if it is a hub or parent driver
null if this node is a device. */
WCHAR NodeName[1]; /* OUTPUT */
} USB_NODE_CONNECTION_NAME, *PUSB_NODE_CONNECTION_NAME;
typedef struct _USB_HUB_NAME {
ULONG ActualLength; /* OUTPUT */
/* NULL terminated unicode symbolic name for the root hub */
WCHAR HubName[1]; /* OUTPUT */
} USB_HUB_NAME, *PUSB_HUB_NAME;
typedef struct _USB_ROOT_HUB_NAME {
ULONG ActualLength; /* OUTPUT */
/* NULL terminated unicode symbolic name for the root hub */
WCHAR RootHubName[1]; /* OUTPUT */
} USB_ROOT_HUB_NAME, *PUSB_ROOT_HUB_NAME;
typedef struct _USB_HCD_DRIVERKEY_NAME {
ULONG ActualLength; /* OUTPUT */
/* NULL terminated unicode driverkeyname for hcd */
WCHAR DriverKeyName[1]; /* OUTPUT */
} 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;
/*
Structure for returning HCD debug and statistic information to
a user mode application.
*/
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;
/*
stat registers
*/
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;
/*
stat registers
*/
HCD_STAT_COUNTERS Counters;
HCD_ISO_STAT_COUNTERS IsoCounters;
} HCD_STAT_INFORMATION_2, *PHCD_STAT_INFORMATION_2;
/*
WMI related structures
*/
/* these index in to our array of guids */
#define WMI_USB_DRIVER_INFORMATION 0
#define WMI_USB_DRIVER_NOTIFICATION 1
typedef enum _USB_NOTIFICATION_TYPE {
/* the following return a
USB_CONNECTION_NOTIFICATION structure: */
EnumerationFailure = 0,
InsufficentBandwidth,
InsufficentPower,
OverCurrent,
ResetOvercurrent,
/* the following return a
USB_BUS_NOTIFICATION structure:*/
AcquireBusInfo,
/* the following return a
USB_ACQUIRE_INFO structure: */
AcquireHubName,
AcquireControllerName,
/* the following return a
USB_HUB_NOTIFICATION structure: */
HubOvercurrent,
HubPowerChange,
} USB_NOTIFICATION_TYPE;
typedef struct _USB_NOTIFICATION {
/* indicates type of notification */
USB_NOTIFICATION_TYPE NotificationType;
} USB_NOTIFICATION, *PUSB_NOTIFICATION;
/* this structure is used for connection notification
codes */
typedef struct _USB_CONNECTION_NOTIFICATION {
/* indicates type of notification */
USB_NOTIFICATION_TYPE NotificationType;
/* valid for all connection notifictaion codes,
0 indicates global condition for hub or parent
this value will be a port number for devices
attached to a hub, otherwise a one based
index if the device is a child of a composite
parent */
ULONG ConnectionNumber;
/* valid for InsufficentBandwidth,
the amount of bandwidth the device
tried to allocate and was denied. */
ULONG RequestedBandwidth;
/* valid for EnumerationFailure,
gives some indication why the device failed
to enumerate */
ULONG EnumerationFailReason;
/* valid for InsufficentPower,
the amount of power requested to configure
this device. */
ULONG PowerRequested;
/* length of the UNICODE symbolic name (in bytes) for the HUB
that this device is attached to.
not including NULL */
ULONG HubNameLength;
} USB_CONNECTION_NOTIFICATION, *PUSB_CONNECTION_NOTIFICATION;
/*
This structure is used for the bus notification code 'AcquireBusInfo'
*/
typedef struct _USB_BUS_NOTIFICATION {
/* indicates type of notification */
USB_NOTIFICATION_TYPE NotificationType; /* indicates type of
notification */
ULONG TotalBandwidth;
ULONG ConsumedBandwidth;
/* length of the UNICODE symbolic name (in bytes) for the controller
that this device is attached to.
not including NULL */
ULONG ControllerNameLength;
} USB_BUS_NOTIFICATION, *PUSB_BUS_NOTIFICATION;
/*
used to acquire user mode filenames to open respective objects
*/
typedef struct _USB_ACQUIRE_INFO {
/* indicates type of notification */
USB_NOTIFICATION_TYPE NotificationType;
/* TotalSize of this struct */
ULONG TotalSize;
WCHAR Buffer[1];
} USB_ACQUIRE_INFO, *PUSB_ACQUIRE_INFO;
#include <poppack.h>
#endif /* __USBIOCTL_H__ */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -