📄 usbuser.h
字号:
Host Controller Miniport Driver
The vendors must pass a guid that is recognized
by the miniport , this enures that the parameters
are not miss-interpreted
USBUSER_PASS_THRU
****************************************************/
typedef struct _USB_PASS_THRU_PARAMETERS {
GUID FunctionGUID;
ULONG ParameterLength;
UCHAR Parameters[4];
} USB_PASS_THRU_PARAMETERS, *PUSB_PASS_THRU_PARAMETERS;
typedef struct _USBUSER_PASS_THRU_REQUEST {
USBUSER_REQUEST_HEADER Header;
USB_PASS_THRU_PARAMETERS PassThru;
} USBUSER_PASS_THRU_REQUEST, *PUSBUSER_PASS_THRU_REQUEST;
/****************************************************
API - GetPowerStateMap
Returns specific information about a controller
and root hubs power state given a specific
system state.
USBUSER_GET_POWER_STATE_MAP
****************************************************/
typedef enum _WDMUSB_POWER_STATE {
WdmUsbPowerNotMapped = 0,
WdmUsbPowerSystemUnspecified = 100,
WdmUsbPowerSystemWorking,
WdmUsbPowerSystemSleeping1,
WdmUsbPowerSystemSleeping2,
WdmUsbPowerSystemSleeping3,
WdmUsbPowerSystemHibernate,
WdmUsbPowerSystemShutdown,
WdmUsbPowerDeviceUnspecified = 200,
WdmUsbPowerDeviceD0,
WdmUsbPowerDeviceD1,
WdmUsbPowerDeviceD2,
WdmUsbPowerDeviceD3
} WDMUSB_POWER_STATE;
typedef struct _USB_POWER_INFO {
/* input */
WDMUSB_POWER_STATE SystemState;
/* output */
WDMUSB_POWER_STATE HcDevicePowerState;
WDMUSB_POWER_STATE HcDeviceWake;
WDMUSB_POWER_STATE HcSystemWake;
WDMUSB_POWER_STATE RhDevicePowerState;
WDMUSB_POWER_STATE RhDeviceWake;
WDMUSB_POWER_STATE RhSystemWake;
WDMUSB_POWER_STATE LastSystemSleepState;
BOOLEAN CanWakeup;
BOOLEAN IsPowered;
} USB_POWER_INFO, *PUSB_POWER_INFO;
typedef struct _USBUSER_POWER_INFO_REQUEST {
USBUSER_REQUEST_HEADER Header;
USB_POWER_INFO PowerInformation;
} USBUSER_POWER_INFO_REQUEST, *PUSBUSER_POWER_INFO_REQUEST;
/****************************************************
API - Open Raw Device access on the bus
USBUSER_OP_OPEN_RAW_DEVICE
****************************************************/
typedef struct _USB_OPEN_RAW_DEVICE_PARAMETERS {
USHORT PortStatus;
USHORT MaxPacketEp0;
} USB_OPEN_RAW_DEVICE_PARAMETERS , *PUSB_OPEN_RAW_DEVICE_PARAMETERS;
typedef struct _USBUSER_OPEN_RAW_DEVICE {
USBUSER_REQUEST_HEADER Header;
USB_OPEN_RAW_DEVICE_PARAMETERS Parameters;
} USBUSER_OPEN_RAW_DEVICE, *PUSBUSER_OPEN_RAW_DEVICE;
/****************************************************
API - Close Raw Device access on the bus
USBUSER_OP_CLOSE_RAW_DEVICE
****************************************************/
typedef struct _USB_CLOSE_RAW_DEVICE_PARAMETERS {
ULONG xxx;
} USB_CLOSE_RAW_DEVICE_PARAMETERS , *PUSB_CLOSE_RAW_DEVICE_PARAMETERS;
typedef struct _USBUSER_CLOSE_RAW_DEVICE {
USBUSER_REQUEST_HEADER Header;
USB_CLOSE_RAW_DEVICE_PARAMETERS Parameters;
} USBUSER_CLOSE_RAW_DEVICE, *PUSBUSER_CLOSE_RAW_DEVICE;
/****************************************************
API - Send control command via raw device handle
USBUSER_OP_SEND_RAW_COMMAND
****************************************************/
typedef struct _USB_SEND_RAW_COMMAND_PARAMETERS {
/* setup packet */
UCHAR Usb_bmRequest;
UCHAR Usb_bRequest;
USHORT Usb_wVlaue;
USHORT Usb_wIndex;
USHORT Usb_wLength;
/* other parameters */
USHORT DeviceAddress;
USHORT MaximumPacketSize;
ULONG Timeout;
ULONG DataLength;
USBD_STATUS UsbdStatusCode;
UCHAR Data[4];
} USB_SEND_RAW_COMMAND_PARAMETERS, *PUSB_SEND_RAW_COMMAND_PARAMETERS;
typedef struct _USBUSER_SEND_RAW_COMMAND {
USBUSER_REQUEST_HEADER Header;
USB_SEND_RAW_COMMAND_PARAMETERS Parameters;
} USBUSER_SEND_RAW_COMMAND, *PUSBUSER_SEND_RAW_COMMAND;
/****************************************************
API - return information about allocated
bandwidth
USBUSER_GET_BANDWIDTH_INFORMATION
****************************************************/
typedef struct _USB_BANDWIDTH_INFO {
ULONG DeviceCount;
// total bandith in bits/sec
ULONG TotalBusBandwidth;
// allocated bandwidth based on a 32 sec
// slice of bus time ie bits/32 sec
ULONG Total32secBandwidth;
ULONG AllocedBulkAndControl;
ULONG AllocedIso;
ULONG AllocedInterrupt_1ms;
ULONG AllocedInterrupt_2ms;
ULONG AllocedInterrupt_4ms;
ULONG AllocedInterrupt_8ms;
ULONG AllocedInterrupt_16ms;
ULONG AllocedInterrupt_32ms;
} USB_BANDWIDTH_INFO, *PUSB_BANDWIDTH_INFO;
typedef struct _USBUSER_BANDWIDTH_INFO_REQUEST {
USBUSER_REQUEST_HEADER Header;
USB_BANDWIDTH_INFO BandwidthInformation;
} USBUSER_BANDWIDTH_INFO_REQUEST, *PUSBUSER_BANDWIDTH_INFO_REQUEST;
/****************************************************
API - return information data transferred on the
bus
USBUSER_BUS_STATISTICS_0
****************************************************/
typedef struct _USB_BUS_STATISTICS_0 {
ULONG DeviceCount;
LARGE_INTEGER CurrentSystemTime;
ULONG CurrentUsbFrame;
ULONG BulkBytes;
ULONG IsoBytes;
ULONG InterruptBytes;
ULONG ControlDataBytes;
ULONG PciInterruptCount;
ULONG HardResetCount;
ULONG WorkerSignalCount;
ULONG CommonBufferBytes;
ULONG WorkerIdleTimeMs;
BOOLEAN RootHubEnabled;
// 0=D0, 1=D1, 2=D2, 3=D3
UCHAR RootHubDevicePowerState;
// 1 = active 0 = idle
UCHAR Unused;
// used to generate legacy name HCDn
UCHAR NameIndex;
} USB_BUS_STATISTICS_0, *PUSB_BUS_STATISTICS_0;
typedef struct _USBUSER_BUS_STATISTICS_0_REQUEST {
USBUSER_REQUEST_HEADER Header;
USB_BUS_STATISTICS_0 BusStatistics0;
} USBUSER_BUS_STATISTICS_0_REQUEST, *PUSBUSER_BUS_STATISTICS_0_REQUEST;
/****************************************************
API - Get USB DRIVER Version
USBUSER_GET_USB_DRIVER_VERSION
****************************************************/
typedef struct _USB_DRIVER_VERSION_PARAMETERS {
/* goat code for this rev of the stack */
ULONG DriverTrackingCode;
/* USBDI Api set supported */
ULONG USBDI_Version;
/* USB USER Api Set supported */
ULONG USBUSER_Version;
/* set to true if checked vesrion(s) on
the stack are loaded
*/
BOOLEAN CheckedPortDriver;
BOOLEAN CheckedMiniportDriver;
/* BCD usb version 0x0110 (1.1) 0x0200 (2.0) */
USHORT USB_Version;
} USB_DRIVER_VERSION_PARAMETERS , *PUSB_DRIVER_VERSION_PARAMETERS;
typedef struct _USBUSER_GET_DRIVER_VERSION {
USBUSER_REQUEST_HEADER Header;
USB_DRIVER_VERSION_PARAMETERS Parameters;
} USBUSER_GET_DRIVER_VERSION, *PUSBUSER_GET_DRIVER_VERSION;
/****************************************************
API - Get USB 2 Hardware Revision
USBUSER_GET_USB2HW_VERSION
*****************************************************/
//#define USB2HW_UNKNOWN 0x00
//#define USB2HW_A0 0xA0
//#define USB2HW_A1 0xA1
//#define USB2HW_B0 0xB0
typedef struct _USB_USB2HW_VERSION_PARAMETERS {
UCHAR Usb2HwRevision;
} USB_USB2HW_VERSION_PARAMETERS, *PUSB_USB2HW_VERSION_PARAMETERS;
typedef struct _USBUSER_GET_USB2HW_VERSION {
USBUSER_REQUEST_HEADER Header;
USB_USB2HW_VERSION_PARAMETERS Parameters;
} USBUSER_GET_USB2HW_VERSION, *PUSBUSER_GET_USB2HW_VERSION;
#include <POPPACK.H>
#endif //__USBUSER_H__
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -