More work on USB related definitions

svn path=/branches/header-work/; revision=45864
This commit is contained in:
Amine Khaldi 2010-03-05 11:44:11 +00:00
parent 97e7fd6cb6
commit 73cc29ce32

View file

@ -20,16 +20,16 @@
* *
*/ */
#ifndef __USBUSER_H #pragma once
#define __USBUSER_H
#include "usb.h"
#include "usbiodef.h"
#ifdef __cplusplus #ifdef __cplusplus
extern "C" { extern "C" {
#endif #endif
#if (_WIN32_WINNT >= 0x0501)
#include "usbiodef.h"
#include <pshpack1.h> #include <pshpack1.h>
#define USBUSER_VERSION 0x0004 #define USBUSER_VERSION 0x0004
@ -73,11 +73,17 @@ typedef enum _USB_USER_ERROR_CODE {
#define USBUSER_GET_ROOTHUB_SYMBOLIC_NAME 0x00000007 #define USBUSER_GET_ROOTHUB_SYMBOLIC_NAME 0x00000007
#define USBUSER_GET_USB_DRIVER_VERSION 0x00000008 #define USBUSER_GET_USB_DRIVER_VERSION 0x00000008
#define USBUSER_GET_USB2_HW_VERSION 0x00000009 #define USBUSER_GET_USB2_HW_VERSION 0x00000009
#define USBUSER_USB_REFRESH_HCT_REG 0x0000000a
#define USBUSER_OP_SEND_ONE_PACKET 0x10000001 #define USBUSER_OP_SEND_ONE_PACKET 0x10000001
#define USBUSER_OP_RAW_RESET_PORT 0x20000001 #define USBUSER_OP_RAW_RESET_PORT 0x20000001
#define USBUSER_OP_OPEN_RAW_DEVICE 0x20000002 #define USBUSER_OP_OPEN_RAW_DEVICE 0x20000002
#define USBUSER_OP_CLOSE_RAW_DEVICE 0x20000003 #define USBUSER_OP_CLOSE_RAW_DEVICE 0x20000003
#define USBUSER_OP_SEND_RAW_COMMAND 0x20000004 #define USBUSER_OP_SEND_RAW_COMMAND 0x20000004
#define USBUSER_SET_ROOTPORT_FEATURE 0x20000005
#define USBUSER_CLEAR_ROOTPORT_FEATURE 0x20000006
#define USBUSER_GET_ROOTPORT_STATUS 0x20000007
#define USBUSER_INVALID_REQUEST 0xFFFFFFF0 #define USBUSER_INVALID_REQUEST 0xFFFFFFF0
#define USBUSER_OP_MASK_DEVONLY_API 0x10000000 #define USBUSER_OP_MASK_DEVONLY_API 0x10000000
#define USBUSER_OP_MASK_HCTEST_API 0x20000000 #define USBUSER_OP_MASK_HCTEST_API 0x20000000
@ -93,6 +99,18 @@ typedef enum _USB_USER_ERROR_CODE {
#define USB_PACKETFLAG_TOGGLE0 0x00000100 #define USB_PACKETFLAG_TOGGLE0 0x00000100
#define USB_PACKETFLAG_TOGGLE1 0x00000200 #define USB_PACKETFLAG_TOGGLE1 0x00000200
/* USB_CONTROLLER_INFO_0.HcFeatureFlags constants */
#define USB_HC_FEATURE_FLAG_PORT_POWER_SWITCHING 0x00000001
#define USB_HC_FEATURE_FLAG_SEL_SUSPEND 0x00000002
#define USB_HC_FEATURE_LEGACY_BIOS 0x00000004
typedef struct _USBUSER_REQUEST_HEADER {
ULONG UsbUserRequest;
USB_USER_ERROR_CODE UsbUserStatusCode;
ULONG RequestBufferLength;
ULONG ActualBufferLength;
} USBUSER_REQUEST_HEADER, *PUSBUSER_REQUEST_HEADER;
typedef struct _PACKET_PARAMETERS { typedef struct _PACKET_PARAMETERS {
UCHAR DeviceAddress; UCHAR DeviceAddress;
UCHAR EndpointAddress; UCHAR EndpointAddress;
@ -108,74 +126,41 @@ typedef struct _PACKET_PARAMETERS {
UCHAR Data[4]; UCHAR Data[4];
} PACKET_PARAMETERS, *PPACKET_PARAMETERS; } PACKET_PARAMETERS, *PPACKET_PARAMETERS;
typedef struct _USBUSER_SEND_ONE_PACKET {
USBUSER_REQUEST_HEADER Header;
PACKET_PARAMETERS PacketParameters;
} USBUSER_SEND_ONE_PACKET, *PUSBUSER_SEND_ONE_PACKET;
typedef struct _RAW_RESET_PORT_PARAMETERS { typedef struct _RAW_RESET_PORT_PARAMETERS {
USHORT PortNumber; USHORT PortNumber;
USHORT PortStatus; USHORT PortStatus;
} RAW_RESET_PORT_PARAMETERS, *PRAW_RESET_PORT_PARAMETERS; } RAW_RESET_PORT_PARAMETERS, *PRAW_RESET_PORT_PARAMETERS;
typedef struct _USB_BANDWIDTH_INFO { typedef struct _USBUSER_RAW_RESET_ROOT_PORT {
ULONG DeviceCount;
ULONG TotalBusBandwidth;
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_REQUEST_HEADER {
ULONG UsbUserRequest;
USB_USER_ERROR_CODE UsbUserStatusCode;
ULONG RequestBufferLength;
ULONG ActualBufferLength;
} USBUSER_REQUEST_HEADER, *PUSBUSER_REQUEST_HEADER;
typedef struct _USBUSER_BANDWIDTH_INFO_REQUEST {
USBUSER_REQUEST_HEADER Header; USBUSER_REQUEST_HEADER Header;
USB_BANDWIDTH_INFO BandwidthInformation; RAW_RESET_PORT_PARAMETERS Parameters;
} USBUSER_BANDWIDTH_INFO_REQUEST, *PUSBUSER_BANDWIDTH_INFO_REQUEST; } USBUSER_RAW_RESET_ROOT_PORT, *PUSBUSER_RAW_RESET_ROOT_PORT;
typedef struct _USB_BUS_STATISTICS_0 { typedef struct _RAW_ROOTPORT_FEATURE {
ULONG DeviceCount; USHORT PortNumber;
LARGE_INTEGER CurrentSystemTime; USHORT PortFeature;
ULONG CurrentUsbFrame; USHORT PortStatus;
ULONG BulkBytes; } RAW_ROOTPORT_FEATURE, *PRAW_ROOTPORT_FEATURE;
ULONG IsoBytes;
ULONG InterruptBytes;
ULONG ControlDataBytes;
ULONG PciInterruptCount;
ULONG HardResetCount;
ULONG WorkerSignalCount;
ULONG CommonBufferBytes;
ULONG WorkerIdleTimeMs;
BOOLEAN RootHubEnabled;
UCHAR RootHubDevicePowerState;
UCHAR Unused;
UCHAR NameIndex;
} USB_BUS_STATISTICS_0, *PUSB_BUS_STATISTICS_0;
typedef struct _USBUSER_BUS_STATISTICS_0_REQUEST { typedef struct _USBUSER_ROOTPORT_FEATURE_REQUEST {
USBUSER_REQUEST_HEADER Header; USBUSER_REQUEST_HEADER Header;
USB_BUS_STATISTICS_0 BusStatistics0; RAW_ROOTPORT_FEATURE Parameters;
} USBUSER_BUS_STATISTICS_0_REQUEST, *PUSBUSER_BUS_STATISTICS_0_REQUEST; } USBUSER_ROOTPORT_FEATURE_REQUEST, *PUSBUSER_ROOTPORT_FEATURE_REQUEST;
/* USB_CONTROLLER_INFO_0.HcFeatureFlags constants */ typedef struct _RAW_ROOTPORT_PARAMETERS {
#define USB_HC_FEATURE_FLAG_PORT_POWER_SWITCHING 0x00000001 USHORT PortNumber;
#define USB_HC_FEATURE_FLAG_SEL_SUSPEND 0x00000002 USHORT PortStatus;
#define USB_HC_FEATURE_LEGACY_BIOS 0x00000004 } RAW_ROOTPORT_PARAMETERS, *PRAW_ROOTPORT_PARAMETERS;
typedef struct _USB_CLOSE_RAW_DEVICE_PARAMETERS { typedef struct _USBUSER_ROOTPORT_PARAMETERS {
ULONG xxx;
} USB_CLOSE_RAW_DEVICE_PARAMETERS , *PUSB_CLOSE_RAW_DEVICE_PARAMETERS;
typedef struct _USBUSER_CLOSE_RAW_DEVICE {
USBUSER_REQUEST_HEADER Header; USBUSER_REQUEST_HEADER Header;
USB_CLOSE_RAW_DEVICE_PARAMETERS Parameters; RAW_ROOTPORT_PARAMETERS Parameters;
} USBUSER_CLOSE_RAW_DEVICE, *PUSBUSER_CLOSE_RAW_DEVICE; } USBUSER_ROOTPORT_PARAMETERS, *PUSBUSER_ROOTPORT_PARAMETERS;
typedef struct _USB_CONTROLLER_INFO_0 { typedef struct _USB_CONTROLLER_INFO_0 {
ULONG PciVendorId; ULONG PciVendorId;
@ -191,29 +176,26 @@ typedef struct _USBUSER_CONTROLLER_INFO_0 {
USB_CONTROLLER_INFO_0 Info0; USB_CONTROLLER_INFO_0 Info0;
} USBUSER_CONTROLLER_INFO_0, *PUSBUSER_CONTROLLER_INFO_0; } USBUSER_CONTROLLER_INFO_0, *PUSBUSER_CONTROLLER_INFO_0;
typedef struct _USB_DRIVER_VERSION_PARAMETERS { typedef struct _USB_UNICODE_NAME {
ULONG DriverTrackingCode; ULONG Length;
ULONG USBDI_Version; WCHAR String[1];
ULONG USBUSER_Version; } USB_UNICODE_NAME, *PUSB_UNICODE_NAME;
BOOLEAN CheckedPortDriver;
BOOLEAN CheckedMiniportDriver;
USHORT USB_Version;
} USB_DRIVER_VERSION_PARAMETERS , *PUSB_DRIVER_VERSION_PARAMETERS;
typedef struct _USBUSER_GET_DRIVER_VERSION { typedef struct _USBUSER_CONTROLLER_UNICODE_NAME {
USBUSER_REQUEST_HEADER Header; USBUSER_REQUEST_HEADER Header;
USB_DRIVER_VERSION_PARAMETERS Parameters; USB_UNICODE_NAME UnicodeName;
} USBUSER_GET_DRIVER_VERSION, *PUSBUSER_GET_DRIVER_VERSION; } USBUSER_CONTROLLER_UNICODE_NAME, *PUSBUSER_CONTROLLER_UNICODE_NAME;
typedef struct _USB_OPEN_RAW_DEVICE_PARAMETERS { typedef struct _USB_PASS_THRU_PARAMETERS {
USHORT PortStatus; GUID FunctionGUID;
USHORT MaxPacketEp0; ULONG ParameterLength;
} USB_OPEN_RAW_DEVICE_PARAMETERS , *PUSB_OPEN_RAW_DEVICE_PARAMETERS; UCHAR Parameters[4];
} USB_PASS_THRU_PARAMETERS, *PUSB_PASS_THRU_PARAMETERS;
typedef struct _USBUSER_OPEN_RAW_DEVICE { typedef struct _USBUSER_PASS_THRU_REQUEST {
USBUSER_REQUEST_HEADER Header; USBUSER_REQUEST_HEADER Header;
USB_OPEN_RAW_DEVICE_PARAMETERS Parameters; USB_PASS_THRU_PARAMETERS PassThru;
} USBUSER_OPEN_RAW_DEVICE, *PUSBUSER_OPEN_RAW_DEVICE; } USBUSER_PASS_THRU_REQUEST, *PUSBUSER_PASS_THRU_REQUEST;
typedef enum _WDMUSB_POWER_STATE { typedef enum _WDMUSB_POWER_STATE {
WdmUsbPowerNotMapped = 0, WdmUsbPowerNotMapped = 0,
@ -249,36 +231,24 @@ typedef struct _USBUSER_POWER_INFO_REQUEST {
USB_POWER_INFO PowerInformation; USB_POWER_INFO PowerInformation;
} USBUSER_POWER_INFO_REQUEST, *PUSBUSER_POWER_INFO_REQUEST; } USBUSER_POWER_INFO_REQUEST, *PUSBUSER_POWER_INFO_REQUEST;
typedef struct _USB_UNICODE_NAME { typedef struct _USB_OPEN_RAW_DEVICE_PARAMETERS {
ULONG Length; USHORT PortStatus;
WCHAR String[1]; USHORT MaxPacketEp0;
} USB_UNICODE_NAME, *PUSB_UNICODE_NAME; } USB_OPEN_RAW_DEVICE_PARAMETERS , *PUSB_OPEN_RAW_DEVICE_PARAMETERS;
typedef struct _USBUSER_CONTROLLER_UNICODE_NAME { typedef struct _USBUSER_OPEN_RAW_DEVICE {
USBUSER_REQUEST_HEADER Header; USBUSER_REQUEST_HEADER Header;
USB_UNICODE_NAME UnicodeName; USB_OPEN_RAW_DEVICE_PARAMETERS Parameters;
} USBUSER_CONTROLLER_UNICODE_NAME, *PUSBUSER_CONTROLLER_UNICODE_NAME; } USBUSER_OPEN_RAW_DEVICE, *PUSBUSER_OPEN_RAW_DEVICE;
typedef struct _USB_PASS_THRU_PARAMETERS { typedef struct _USB_CLOSE_RAW_DEVICE_PARAMETERS {
GUID FunctionGUID; ULONG xxx;
ULONG ParameterLength; } USB_CLOSE_RAW_DEVICE_PARAMETERS , *PUSB_CLOSE_RAW_DEVICE_PARAMETERS;
UCHAR Parameters[4];
} USB_PASS_THRU_PARAMETERS, *PUSB_PASS_THRU_PARAMETERS;
typedef struct _USBUSER_PASS_THRU_REQUEST { typedef struct _USBUSER_CLOSE_RAW_DEVICE {
USBUSER_REQUEST_HEADER Header; USBUSER_REQUEST_HEADER Header;
USB_PASS_THRU_PARAMETERS PassThru; USB_CLOSE_RAW_DEVICE_PARAMETERS Parameters;
} USBUSER_PASS_THRU_REQUEST, *PUSBUSER_PASS_THRU_REQUEST; } USBUSER_CLOSE_RAW_DEVICE, *PUSBUSER_CLOSE_RAW_DEVICE;
typedef struct _USBUSER_RAW_RESET_ROOT_PORT {
USBUSER_REQUEST_HEADER Header;
RAW_RESET_PORT_PARAMETERS Parameters;
} USBUSER_RAW_RESET_ROOT_PORT, *PUSBUSER_RAW_RESET_ROOT_PORT;
typedef struct _USBUSER_SEND_ONE_PACKET {
USBUSER_REQUEST_HEADER Header;
PACKET_PARAMETERS PacketParameters;
} USBUSER_SEND_ONE_PACKET, *PUSBUSER_SEND_ONE_PACKET;
typedef struct _USB_SEND_RAW_COMMAND_PARAMETERS { typedef struct _USB_SEND_RAW_COMMAND_PARAMETERS {
UCHAR Usb_bmRequest; UCHAR Usb_bmRequest;
@ -299,11 +269,62 @@ typedef struct _USBUSER_SEND_RAW_COMMAND {
USB_SEND_RAW_COMMAND_PARAMETERS Parameters; USB_SEND_RAW_COMMAND_PARAMETERS Parameters;
} USBUSER_SEND_RAW_COMMAND, *PUSBUSER_SEND_RAW_COMMAND; } USBUSER_SEND_RAW_COMMAND, *PUSBUSER_SEND_RAW_COMMAND;
/* USB_USB2HW_VERSION_PARAMETERS.Usb2HwRevision constants */ typedef struct _USB_BANDWIDTH_INFO {
#define USB2HW_UNKNOWN 0x00 ULONG DeviceCount;
#define USB2HW_A0 0xA0 ULONG TotalBusBandwidth;
#define USB2HW_A1 0xA1 ULONG Total32secBandwidth;
#define USB2HW_B0 0xB0 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;
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;
UCHAR RootHubDevicePowerState;
UCHAR Unused;
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;
typedef struct _USB_DRIVER_VERSION_PARAMETERS {
ULONG DriverTrackingCode;
ULONG USBDI_Version;
ULONG USBUSER_Version;
BOOLEAN CheckedPortDriver;
BOOLEAN CheckedMiniportDriver;
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;
typedef struct _USB_USB2HW_VERSION_PARAMETERS { typedef struct _USB_USB2HW_VERSION_PARAMETERS {
UCHAR Usb2HwRevision; UCHAR Usb2HwRevision;
@ -314,10 +335,13 @@ typedef struct _USBUSER_GET_USB2HW_VERSION {
USB_USB2HW_VERSION_PARAMETERS Parameters; USB_USB2HW_VERSION_PARAMETERS Parameters;
} USBUSER_GET_USB2HW_VERSION, *PUSBUSER_GET_USB2HW_VERSION; } USBUSER_GET_USB2HW_VERSION, *PUSBUSER_GET_USB2HW_VERSION;
typedef struct _USBUSER_REFRESH_HCT_REG {
USBUSER_REQUEST_HEADER Header;
ULONG Flags;
} USBUSER_REFRESH_HCT_REG, *PUSBUSER_REFRESH_HCT_REG;
#include <poppack.h> #include <poppack.h>
#ifdef __cplusplus #ifdef __cplusplus
} }
#endif #endif
#endif /* __USBUSER_H */