⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 usbuser.h

📁 MinGW+MSYS开发必用的api参考
💻 H
字号:
/* * usbuser.h * * USB user mode IOCTL interface * * This file is part of the w32api package. * * Contributors: *   Created by Casper S. Hornstrup <chorns@users.sourceforge.net> * * THIS SOFTWARE IS NOT COPYRIGHTED * * This source code is offered for use in the public domain. You may * use, modify or distribute it freely. * * This code is distributed in the hope that it will be useful but * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY * DISCLAIMED. This includes but is not limited to warranties of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * */#ifndef __USBUSER_H#define __USBUSER_H#if __GNUC__ >=3#pragma GCC system_header#endif#ifdef __cplusplusextern "C" {#endif#include "ntddk.h"#include "usb.h"#include "usbiodef.h"#include <pshpack1.h>#define USBUSER_VERSION                   0x0004#define IOCTL_USB_USER_REQUEST            USB_CTL(HCD_USER_REQUEST)#ifndef IOCTL_USB_DIAGNOSTIC_MODE_ON#define IOCTL_USB_DIAGNOSTIC_MODE_ON      USB_CTL(HCD_DIAGNOSTIC_MODE_ON) #endif#ifndef IOCTL_USB_DIAGNOSTIC_MODE_OFF#define IOCTL_USB_DIAGNOSTIC_MODE_OFF     USB_CTL(HCD_DIAGNOSTIC_MODE_OFF) #endif#ifndef IOCTL_USB_GET_ROOT_HUB_NAME#define IOCTL_USB_GET_ROOT_HUB_NAME       USB_CTL(HCD_GET_ROOT_HUB_NAME) #endif#ifndef IOCTL_GET_HCD_DRIVERKEY_NAME#define IOCTL_GET_HCD_DRIVERKEY_NAME      USB_CTL(HCD_GET_DRIVERKEY_NAME) #endiftypedef enum _USB_USER_ERROR_CODE {	UsbUserSuccess = 0,	UsbUserNotSupported,	UsbUserInvalidRequestCode,	UsbUserFeatureDisabled,	UsbUserInvalidHeaderParameter,	UsbUserInvalidParameter,	UsbUserMiniportError,	UsbUserBufferTooSmall,	UsbUserErrorNotMapped,	UsbUserDeviceNotStarted,	UsbUserNoDeviceConnected} USB_USER_ERROR_CODE;#define USBUSER_GET_CONTROLLER_INFO_0     0x00000001#define USBUSER_GET_CONTROLLER_DRIVER_KEY 0x00000002#define USBUSER_PASS_THRU                 0x00000003#define USBUSER_GET_POWER_STATE_MAP       0x00000004#define USBUSER_GET_BANDWIDTH_INFORMATION 0x00000005#define USBUSER_GET_BUS_STATISTICS_0      0x00000006#define USBUSER_GET_ROOTHUB_SYMBOLIC_NAME 0x00000007#define USBUSER_GET_USB_DRIVER_VERSION    0x00000008#define USBUSER_GET_USB2_HW_VERSION       0x00000009#define USBUSER_OP_SEND_ONE_PACKET        0x10000001#define USBUSER_OP_RAW_RESET_PORT         0x20000001#define USBUSER_OP_OPEN_RAW_DEVICE        0x20000002#define USBUSER_OP_CLOSE_RAW_DEVICE       0x20000003#define USBUSER_OP_SEND_RAW_COMMAND       0x20000004#define USBUSER_INVALID_REQUEST           0xFFFFFFF0#define USBUSER_OP_MASK_DEVONLY_API       0x10000000#define USBUSER_OP_MASK_HCTEST_API        0x20000000#define USB_PACKETFLAG_LOW_SPEED          0x00000001#define USB_PACKETFLAG_FULL_SPEED         0x00000002#define USB_PACKETFLAG_HIGH_SPEED         0x00000004#define USB_PACKETFLAG_ASYNC_IN           0x00000008#define USB_PACKETFLAG_ASYNC_OUT          0x00000010#define USB_PACKETFLAG_ISO_IN             0x00000020#define USB_PACKETFLAG_ISO_OUT            0x00000040#define USB_PACKETFLAG_SETUP              0x00000080#define USB_PACKETFLAG_TOGGLE0            0x00000100#define USB_PACKETFLAG_TOGGLE1            0x00000200typedef struct _PACKET_PARAMETERS {	UCHAR  DeviceAddress;	UCHAR  EndpointAddress;	USHORT  MaximumPacketSize;	ULONG  Timeout;	ULONG  Flags;	ULONG  DataLength;	USHORT  HubDeviceAddress;	USHORT  PortTTNumber;	UCHAR  ErrorCount;	UCHAR  Pad[3];	USBD_STATUS  UsbdStatusCode;	UCHAR  Data[4];} PACKET_PARAMETERS, *PPACKET_PARAMETERS;typedef struct _RAW_RESET_PORT_PARAMETERS {	USHORT  PortNumber;	USHORT  PortStatus;} RAW_RESET_PORT_PARAMETERS, *PRAW_RESET_PORT_PARAMETERS;typedef struct _USB_BANDWIDTH_INFO {	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;	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;/* 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                0x00000004typedef 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;typedef struct _USB_CONTROLLER_INFO_0 {  ULONG  PciVendorId;  ULONG  PciDeviceId;  ULONG  PciRevision;  ULONG  NumberOfRootPorts;  USB_CONTROLLER_FLAVOR  ControllerFlavor;  ULONG  HcFeatureFlags;} USB_CONTROLLER_INFO_0 , *PUSB_CONTROLLER_INFO_0;typedef struct _USBUSER_CONTROLLER_INFO_0 {  USBUSER_REQUEST_HEADER  Header;  USB_CONTROLLER_INFO_0  Info0;    } USBUSER_CONTROLLER_INFO_0, *PUSBUSER_CONTROLLER_INFO_0;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_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;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 {	WDMUSB_POWER_STATE  SystemState;	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;typedef struct _USB_UNICODE_NAME {	ULONG  Length;	WCHAR  String[1];} USB_UNICODE_NAME, *PUSB_UNICODE_NAME;typedef struct _USBUSER_CONTROLLER_UNICODE_NAME {	USBUSER_REQUEST_HEADER  Header;  USB_UNICODE_NAME  UnicodeName;} USBUSER_CONTROLLER_UNICODE_NAME, *PUSBUSER_CONTROLLER_UNICODE_NAME;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;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 {	UCHAR  Usb_bmRequest;	UCHAR  Usb_bRequest;	USHORT  Usb_wVlaue;	USHORT  Usb_wIndex;	USHORT  Usb_wLength;	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;/* USB_USB2HW_VERSION_PARAMETERS.Usb2HwRevision constants */#define USB2HW_UNKNOWN                    0x00#define USB2HW_A0                         0xA0#define USB2HW_A1                         0xA1#define USB2HW_B0                         0xB0typedef 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>#ifdef __cplusplus}#endif#endif /* __USBUSER_H */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -