📄 usbuser.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 + -