Embed:
(wiki syntax)
Show/hide line numbers
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
1.7.2