Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
usbuser.h
00001 /* 00002 * usbuser.h 00003 * 00004 * USB user mode IOCTL interface 00005 * 00006 * This file is part of the w32api package. 00007 * 00008 * Contributors: 00009 * Created by Casper S. Hornstrup <chorns@users.sourceforge.net> 00010 * 00011 * THIS SOFTWARE IS NOT COPYRIGHTED 00012 * 00013 * This source code is offered for use in the public domain. You may 00014 * use, modify or distribute it freely. 00015 * 00016 * This code is distributed in the hope that it will be useful but 00017 * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY 00018 * DISCLAIMED. This includes but is not limited to warranties of 00019 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 00020 * 00021 */ 00022 00023 #ifndef __USBUSER_H 00024 #define __USBUSER_H 00025 00026 #if __GNUC__ >=3 00027 #pragma GCC system_header 00028 #endif 00029 00030 #ifdef __cplusplus 00031 extern "C" { 00032 #endif 00033 00034 #include "ntddk.h" 00035 #include "usb.h" 00036 #include "usbiodef.h" 00037 00038 #include <pshpack1.h> 00039 00040 #define USBUSER_VERSION 0x0004 00041 00042 #define IOCTL_USB_USER_REQUEST USB_CTL(HCD_USER_REQUEST) 00043 00044 #ifndef IOCTL_USB_DIAGNOSTIC_MODE_ON 00045 #define IOCTL_USB_DIAGNOSTIC_MODE_ON USB_CTL(HCD_DIAGNOSTIC_MODE_ON) 00046 #endif 00047 #ifndef IOCTL_USB_DIAGNOSTIC_MODE_OFF 00048 #define IOCTL_USB_DIAGNOSTIC_MODE_OFF USB_CTL(HCD_DIAGNOSTIC_MODE_OFF) 00049 #endif 00050 00051 #ifndef IOCTL_USB_GET_ROOT_HUB_NAME 00052 #define IOCTL_USB_GET_ROOT_HUB_NAME USB_CTL(HCD_GET_ROOT_HUB_NAME) 00053 #endif 00054 #ifndef IOCTL_GET_HCD_DRIVERKEY_NAME 00055 #define IOCTL_GET_HCD_DRIVERKEY_NAME USB_CTL(HCD_GET_DRIVERKEY_NAME) 00056 #endif 00057 00058 typedef enum _USB_USER_ERROR_CODE { 00059 UsbUserSuccess = 0, 00060 UsbUserNotSupported, 00061 UsbUserInvalidRequestCode, 00062 UsbUserFeatureDisabled, 00063 UsbUserInvalidHeaderParameter, 00064 UsbUserInvalidParameter, 00065 UsbUserMiniportError, 00066 UsbUserBufferTooSmall, 00067 UsbUserErrorNotMapped, 00068 UsbUserDeviceNotStarted, 00069 UsbUserNoDeviceConnected 00070 } USB_USER_ERROR_CODE; 00071 00072 #define USBUSER_GET_CONTROLLER_INFO_0 0x00000001 00073 #define USBUSER_GET_CONTROLLER_DRIVER_KEY 0x00000002 00074 #define USBUSER_PASS_THRU 0x00000003 00075 #define USBUSER_GET_POWER_STATE_MAP 0x00000004 00076 #define USBUSER_GET_BANDWIDTH_INFORMATION 0x00000005 00077 #define USBUSER_GET_BUS_STATISTICS_0 0x00000006 00078 #define USBUSER_GET_ROOTHUB_SYMBOLIC_NAME 0x00000007 00079 #define USBUSER_GET_USB_DRIVER_VERSION 0x00000008 00080 #define USBUSER_GET_USB2_HW_VERSION 0x00000009 00081 #define USBUSER_OP_SEND_ONE_PACKET 0x10000001 00082 #define USBUSER_OP_RAW_RESET_PORT 0x20000001 00083 #define USBUSER_OP_OPEN_RAW_DEVICE 0x20000002 00084 #define USBUSER_OP_CLOSE_RAW_DEVICE 0x20000003 00085 #define USBUSER_OP_SEND_RAW_COMMAND 0x20000004 00086 #define USBUSER_INVALID_REQUEST 0xFFFFFFF0 00087 #define USBUSER_OP_MASK_DEVONLY_API 0x10000000 00088 #define USBUSER_OP_MASK_HCTEST_API 0x20000000 00089 00090 #define USB_PACKETFLAG_LOW_SPEED 0x00000001 00091 #define USB_PACKETFLAG_FULL_SPEED 0x00000002 00092 #define USB_PACKETFLAG_HIGH_SPEED 0x00000004 00093 #define USB_PACKETFLAG_ASYNC_IN 0x00000008 00094 #define USB_PACKETFLAG_ASYNC_OUT 0x00000010 00095 #define USB_PACKETFLAG_ISO_IN 0x00000020 00096 #define USB_PACKETFLAG_ISO_OUT 0x00000040 00097 #define USB_PACKETFLAG_SETUP 0x00000080 00098 #define USB_PACKETFLAG_TOGGLE0 0x00000100 00099 #define USB_PACKETFLAG_TOGGLE1 0x00000200 00100 00101 typedef struct _PACKET_PARAMETERS { 00102 UCHAR DeviceAddress; 00103 UCHAR EndpointAddress; 00104 USHORT MaximumPacketSize; 00105 ULONG Timeout; 00106 ULONG Flags; 00107 ULONG DataLength; 00108 USHORT HubDeviceAddress; 00109 USHORT PortTTNumber; 00110 UCHAR ErrorCount; 00111 UCHAR Pad[3]; 00112 USBD_STATUS UsbdStatusCode; 00113 UCHAR Data[4]; 00114 } PACKET_PARAMETERS, *PPACKET_PARAMETERS; 00115 00116 typedef struct _RAW_RESET_PORT_PARAMETERS { 00117 USHORT PortNumber; 00118 USHORT PortStatus; 00119 } RAW_RESET_PORT_PARAMETERS, *PRAW_RESET_PORT_PARAMETERS; 00120 00121 typedef struct _USB_BANDWIDTH_INFO { 00122 ULONG DeviceCount; 00123 ULONG TotalBusBandwidth; 00124 ULONG Total32secBandwidth; 00125 ULONG AllocedBulkAndControl; 00126 ULONG AllocedIso; 00127 ULONG AllocedInterrupt_1ms; 00128 ULONG AllocedInterrupt_2ms; 00129 ULONG AllocedInterrupt_4ms; 00130 ULONG AllocedInterrupt_8ms; 00131 ULONG AllocedInterrupt_16ms; 00132 ULONG AllocedInterrupt_32ms; 00133 } USB_BANDWIDTH_INFO, *PUSB_BANDWIDTH_INFO; 00134 00135 typedef struct _USBUSER_REQUEST_HEADER { 00136 ULONG UsbUserRequest; 00137 USB_USER_ERROR_CODE UsbUserStatusCode; 00138 ULONG RequestBufferLength; 00139 ULONG ActualBufferLength; 00140 } USBUSER_REQUEST_HEADER, *PUSBUSER_REQUEST_HEADER; 00141 00142 typedef struct _USBUSER_BANDWIDTH_INFO_REQUEST { 00143 USBUSER_REQUEST_HEADER Header; 00144 USB_BANDWIDTH_INFO BandwidthInformation; 00145 } USBUSER_BANDWIDTH_INFO_REQUEST, *PUSBUSER_BANDWIDTH_INFO_REQUEST; 00146 00147 typedef struct _USB_BUS_STATISTICS_0 { 00148 ULONG DeviceCount; 00149 LARGE_INTEGER CurrentSystemTime; 00150 ULONG CurrentUsbFrame; 00151 ULONG BulkBytes; 00152 ULONG IsoBytes; 00153 ULONG InterruptBytes; 00154 ULONG ControlDataBytes; 00155 ULONG PciInterruptCount; 00156 ULONG HardResetCount; 00157 ULONG WorkerSignalCount; 00158 ULONG CommonBufferBytes; 00159 ULONG WorkerIdleTimeMs; 00160 BOOLEAN RootHubEnabled; 00161 UCHAR RootHubDevicePowerState; 00162 UCHAR Unused; 00163 UCHAR NameIndex; 00164 } USB_BUS_STATISTICS_0, *PUSB_BUS_STATISTICS_0; 00165 00166 typedef struct _USBUSER_BUS_STATISTICS_0_REQUEST { 00167 USBUSER_REQUEST_HEADER Header; 00168 USB_BUS_STATISTICS_0 BusStatistics0; 00169 } USBUSER_BUS_STATISTICS_0_REQUEST, *PUSBUSER_BUS_STATISTICS_0_REQUEST; 00170 00171 /* USB_CONTROLLER_INFO_0.HcFeatureFlags constants */ 00172 #define USB_HC_FEATURE_FLAG_PORT_POWER_SWITCHING 0x00000001 00173 #define USB_HC_FEATURE_FLAG_SEL_SUSPEND 0x00000002 00174 #define USB_HC_FEATURE_LEGACY_BIOS 0x00000004 00175 00176 typedef struct _USB_CLOSE_RAW_DEVICE_PARAMETERS { 00177 ULONG xxx; 00178 } USB_CLOSE_RAW_DEVICE_PARAMETERS , *PUSB_CLOSE_RAW_DEVICE_PARAMETERS; 00179 00180 typedef struct _USBUSER_CLOSE_RAW_DEVICE { 00181 USBUSER_REQUEST_HEADER Header; 00182 USB_CLOSE_RAW_DEVICE_PARAMETERS Parameters; 00183 } USBUSER_CLOSE_RAW_DEVICE, *PUSBUSER_CLOSE_RAW_DEVICE; 00184 00185 typedef struct _USB_CONTROLLER_INFO_0 { 00186 ULONG PciVendorId; 00187 ULONG PciDeviceId; 00188 ULONG PciRevision; 00189 ULONG NumberOfRootPorts; 00190 USB_CONTROLLER_FLAVOR ControllerFlavor; 00191 ULONG HcFeatureFlags; 00192 } USB_CONTROLLER_INFO_0 , *PUSB_CONTROLLER_INFO_0; 00193 00194 typedef struct _USBUSER_CONTROLLER_INFO_0 { 00195 USBUSER_REQUEST_HEADER Header; 00196 USB_CONTROLLER_INFO_0 Info0; 00197 } USBUSER_CONTROLLER_INFO_0, *PUSBUSER_CONTROLLER_INFO_0; 00198 00199 typedef struct _USB_DRIVER_VERSION_PARAMETERS { 00200 ULONG DriverTrackingCode; 00201 ULONG USBDI_Version; 00202 ULONG USBUSER_Version; 00203 BOOLEAN CheckedPortDriver; 00204 BOOLEAN CheckedMiniportDriver; 00205 USHORT USB_Version; 00206 } USB_DRIVER_VERSION_PARAMETERS , *PUSB_DRIVER_VERSION_PARAMETERS; 00207 00208 typedef struct _USBUSER_GET_DRIVER_VERSION { 00209 USBUSER_REQUEST_HEADER Header; 00210 USB_DRIVER_VERSION_PARAMETERS Parameters; 00211 } USBUSER_GET_DRIVER_VERSION, *PUSBUSER_GET_DRIVER_VERSION; 00212 00213 typedef struct _USB_OPEN_RAW_DEVICE_PARAMETERS { 00214 USHORT PortStatus; 00215 USHORT MaxPacketEp0; 00216 } USB_OPEN_RAW_DEVICE_PARAMETERS , *PUSB_OPEN_RAW_DEVICE_PARAMETERS; 00217 00218 typedef struct _USBUSER_OPEN_RAW_DEVICE { 00219 USBUSER_REQUEST_HEADER Header; 00220 USB_OPEN_RAW_DEVICE_PARAMETERS Parameters; 00221 } USBUSER_OPEN_RAW_DEVICE, *PUSBUSER_OPEN_RAW_DEVICE; 00222 00223 typedef enum _WDMUSB_POWER_STATE { 00224 WdmUsbPowerNotMapped = 0, 00225 WdmUsbPowerSystemUnspecified = 100, 00226 WdmUsbPowerSystemWorking, 00227 WdmUsbPowerSystemSleeping1, 00228 WdmUsbPowerSystemSleeping2, 00229 WdmUsbPowerSystemSleeping3, 00230 WdmUsbPowerSystemHibernate, 00231 WdmUsbPowerSystemShutdown, 00232 WdmUsbPowerDeviceUnspecified = 200, 00233 WdmUsbPowerDeviceD0, 00234 WdmUsbPowerDeviceD1, 00235 WdmUsbPowerDeviceD2, 00236 WdmUsbPowerDeviceD3 00237 } WDMUSB_POWER_STATE; 00238 00239 typedef struct _USB_POWER_INFO { 00240 WDMUSB_POWER_STATE SystemState; 00241 WDMUSB_POWER_STATE HcDevicePowerState; 00242 WDMUSB_POWER_STATE HcDeviceWake; 00243 WDMUSB_POWER_STATE HcSystemWake; 00244 WDMUSB_POWER_STATE RhDevicePowerState; 00245 WDMUSB_POWER_STATE RhDeviceWake; 00246 WDMUSB_POWER_STATE RhSystemWake; 00247 WDMUSB_POWER_STATE LastSystemSleepState; 00248 BOOLEAN CanWakeup; 00249 BOOLEAN IsPowered; 00250 } USB_POWER_INFO, *PUSB_POWER_INFO; 00251 00252 typedef struct _USBUSER_POWER_INFO_REQUEST { 00253 USBUSER_REQUEST_HEADER Header; 00254 USB_POWER_INFO PowerInformation; 00255 } USBUSER_POWER_INFO_REQUEST, *PUSBUSER_POWER_INFO_REQUEST; 00256 00257 typedef struct _USB_UNICODE_NAME { 00258 ULONG Length; 00259 WCHAR String[1]; 00260 } USB_UNICODE_NAME, *PUSB_UNICODE_NAME; 00261 00262 typedef struct _USBUSER_CONTROLLER_UNICODE_NAME { 00263 USBUSER_REQUEST_HEADER Header; 00264 USB_UNICODE_NAME UnicodeName; 00265 } USBUSER_CONTROLLER_UNICODE_NAME, *PUSBUSER_CONTROLLER_UNICODE_NAME; 00266 00267 typedef struct _USB_PASS_THRU_PARAMETERS { 00268 GUID FunctionGUID; 00269 ULONG ParameterLength; 00270 UCHAR Parameters[4]; 00271 } USB_PASS_THRU_PARAMETERS, *PUSB_PASS_THRU_PARAMETERS; 00272 00273 typedef struct _USBUSER_PASS_THRU_REQUEST { 00274 USBUSER_REQUEST_HEADER Header; 00275 USB_PASS_THRU_PARAMETERS PassThru; 00276 } USBUSER_PASS_THRU_REQUEST, *PUSBUSER_PASS_THRU_REQUEST; 00277 00278 typedef struct _USBUSER_RAW_RESET_ROOT_PORT { 00279 USBUSER_REQUEST_HEADER Header; 00280 RAW_RESET_PORT_PARAMETERS Parameters; 00281 } USBUSER_RAW_RESET_ROOT_PORT, *PUSBUSER_RAW_RESET_ROOT_PORT; 00282 00283 typedef struct _USBUSER_SEND_ONE_PACKET { 00284 USBUSER_REQUEST_HEADER Header; 00285 PACKET_PARAMETERS PacketParameters; 00286 } USBUSER_SEND_ONE_PACKET, *PUSBUSER_SEND_ONE_PACKET; 00287 00288 typedef struct _USB_SEND_RAW_COMMAND_PARAMETERS { 00289 UCHAR Usb_bmRequest; 00290 UCHAR Usb_bRequest; 00291 USHORT Usb_wVlaue; 00292 USHORT Usb_wIndex; 00293 USHORT Usb_wLength; 00294 USHORT DeviceAddress; 00295 USHORT MaximumPacketSize; 00296 ULONG Timeout; 00297 ULONG DataLength; 00298 USBD_STATUS UsbdStatusCode; 00299 UCHAR Data[4]; 00300 } USB_SEND_RAW_COMMAND_PARAMETERS, *PUSB_SEND_RAW_COMMAND_PARAMETERS; 00301 00302 typedef struct _USBUSER_SEND_RAW_COMMAND { 00303 USBUSER_REQUEST_HEADER Header; 00304 USB_SEND_RAW_COMMAND_PARAMETERS Parameters; 00305 } USBUSER_SEND_RAW_COMMAND, *PUSBUSER_SEND_RAW_COMMAND; 00306 00307 /* USB_USB2HW_VERSION_PARAMETERS.Usb2HwRevision constants */ 00308 #define USB2HW_UNKNOWN 0x00 00309 #define USB2HW_A0 0xA0 00310 #define USB2HW_A1 0xA1 00311 #define USB2HW_B0 0xB0 00312 00313 typedef struct _USB_USB2HW_VERSION_PARAMETERS { 00314 UCHAR Usb2HwRevision; 00315 } USB_USB2HW_VERSION_PARAMETERS, *PUSB_USB2HW_VERSION_PARAMETERS; 00316 00317 typedef struct _USBUSER_GET_USB2HW_VERSION { 00318 USBUSER_REQUEST_HEADER Header; 00319 USB_USB2HW_VERSION_PARAMETERS Parameters; 00320 } USBUSER_GET_USB2HW_VERSION, *PUSBUSER_GET_USB2HW_VERSION; 00321 00322 #include <poppack.h> 00323 00324 #ifdef __cplusplus 00325 } 00326 #endif 00327 00328 #endif /* __USBUSER_H */
Generated on Tue Jul 12 2022 19:59:55 by
