home *** CD-ROM | disk | FTP | other *** search
/ H4CK3R 14 / hacker14.iso / programacao / cwin / c.exe / $INSTDIR / include / ddk / usbuser.h < prev    next >
Encoding:
C/C++ Source or Header  |  2003-12-15  |  9.9 KB  |  330 lines

  1. /*
  2.  * usbuser.h
  3.  *
  4.  * USB user mode IOCTL interface
  5.  *
  6.  * This file is part of the w32api package.
  7.  *
  8.  * Contributors:
  9.  *   Created by Casper S. Hornstrup <chorns@users.sourceforge.net>
  10.  *
  11.  * THIS SOFTWARE IS NOT COPYRIGHTED
  12.  *
  13.  * This source code is offered for use in the public domain. You may
  14.  * use, modify or distribute it freely.
  15.  *
  16.  * This code is distributed in the hope that it will be useful but
  17.  * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
  18.  * DISCLAIMED. This includes but is not limited to warranties of
  19.  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  20.  *
  21.  */
  22.  
  23. #ifndef __USBUSER_H
  24. #define __USBUSER_H
  25.  
  26. #if __GNUC__ >=3
  27. #pragma GCC system_header
  28. #endif
  29.  
  30. #ifdef __cplusplus
  31. extern "C" {
  32. #endif
  33.  
  34. #pragma pack(push,4)
  35.  
  36. #include "ntddk.h"
  37. #include "usb.h"
  38. #include "usbiodef.h"
  39.  
  40.  
  41. #define USBUSER_VERSION                   0x0004
  42.  
  43. #define IOCTL_USB_USER_REQUEST            USB_CTL(HCD_USER_REQUEST)
  44.  
  45. #ifndef IOCTL_USB_DIAGNOSTIC_MODE_ON
  46. #define IOCTL_USB_DIAGNOSTIC_MODE_ON      USB_CTL(HCD_DIAGNOSTIC_MODE_ON) 
  47. #endif
  48. #ifndef IOCTL_USB_DIAGNOSTIC_MODE_OFF
  49. #define IOCTL_USB_DIAGNOSTIC_MODE_OFF     USB_CTL(HCD_DIAGNOSTIC_MODE_OFF) 
  50. #endif
  51.  
  52. #ifndef IOCTL_USB_GET_ROOT_HUB_NAME
  53. #define IOCTL_USB_GET_ROOT_HUB_NAME       USB_CTL(HCD_GET_ROOT_HUB_NAME) 
  54. #endif
  55. #ifndef IOCTL_GET_HCD_DRIVERKEY_NAME
  56. #define IOCTL_GET_HCD_DRIVERKEY_NAME      USB_CTL(HCD_GET_DRIVERKEY_NAME) 
  57. #endif
  58.  
  59. typedef enum _USB_USER_ERROR_CODE {
  60.     UsbUserSuccess = 0,
  61.     UsbUserNotSupported,
  62.     UsbUserInvalidRequestCode,
  63.     UsbUserFeatureDisabled,
  64.     UsbUserInvalidHeaderParameter,
  65.     UsbUserInvalidParameter,
  66.     UsbUserMiniportError,
  67.     UsbUserBufferTooSmall,
  68.     UsbUserErrorNotMapped,
  69.     UsbUserDeviceNotStarted,
  70.     UsbUserNoDeviceConnected
  71. } USB_USER_ERROR_CODE;
  72.  
  73. #define USBUSER_GET_CONTROLLER_INFO_0     0x00000001
  74. #define USBUSER_GET_CONTROLLER_DRIVER_KEY 0x00000002
  75. #define USBUSER_PASS_THRU                 0x00000003
  76. #define USBUSER_GET_POWER_STATE_MAP       0x00000004
  77. #define USBUSER_GET_BANDWIDTH_INFORMATION 0x00000005
  78. #define USBUSER_GET_BUS_STATISTICS_0      0x00000006
  79. #define USBUSER_GET_ROOTHUB_SYMBOLIC_NAME 0x00000007
  80. #define USBUSER_GET_USB_DRIVER_VERSION    0x00000008
  81. #define USBUSER_GET_USB2_HW_VERSION       0x00000009
  82. #define USBUSER_OP_SEND_ONE_PACKET        0x10000001
  83. #define USBUSER_OP_RAW_RESET_PORT         0x20000001
  84. #define USBUSER_OP_OPEN_RAW_DEVICE        0x20000002
  85. #define USBUSER_OP_CLOSE_RAW_DEVICE       0x20000003
  86. #define USBUSER_OP_SEND_RAW_COMMAND       0x20000004
  87. #define USBUSER_INVALID_REQUEST           0xFFFFFFF0
  88. #define USBUSER_OP_MASK_DEVONLY_API       0x10000000
  89. #define USBUSER_OP_MASK_HCTEST_API        0x20000000
  90.  
  91. #define USB_PACKETFLAG_LOW_SPEED          0x00000001
  92. #define USB_PACKETFLAG_FULL_SPEED         0x00000002
  93. #define USB_PACKETFLAG_HIGH_SPEED         0x00000004
  94. #define USB_PACKETFLAG_ASYNC_IN           0x00000008
  95. #define USB_PACKETFLAG_ASYNC_OUT          0x00000010
  96. #define USB_PACKETFLAG_ISO_IN             0x00000020
  97. #define USB_PACKETFLAG_ISO_OUT            0x00000040
  98. #define USB_PACKETFLAG_SETUP              0x00000080
  99. #define USB_PACKETFLAG_TOGGLE0            0x00000100
  100. #define USB_PACKETFLAG_TOGGLE1            0x00000200
  101.  
  102. typedef struct _PACKET_PARAMETERS {
  103.     UCHAR  DeviceAddress;
  104.     UCHAR  EndpointAddress;
  105.     USHORT  MaximumPacketSize;
  106.     ULONG  Timeout;
  107.     ULONG  Flags;
  108.     ULONG  DataLength;
  109.     USHORT  HubDeviceAddress;
  110.     USHORT  PortTTNumber;
  111.     UCHAR  ErrorCount;
  112.     UCHAR  Pad[3];
  113.     USBD_STATUS  UsbdStatusCode;
  114.     UCHAR  Data[4];
  115. } PACKET_PARAMETERS, *PPACKET_PARAMETERS;
  116.  
  117. typedef struct _RAW_RESET_PORT_PARAMETERS {
  118.     USHORT  PortNumber;
  119.     USHORT  PortStatus;
  120. } RAW_RESET_PORT_PARAMETERS, *PRAW_RESET_PORT_PARAMETERS;
  121.  
  122. typedef struct _USB_BANDWIDTH_INFO {
  123.     ULONG  DeviceCount;
  124.     ULONG  TotalBusBandwidth;
  125.     ULONG  Total32secBandwidth;
  126.     ULONG  AllocedBulkAndControl;
  127.     ULONG  AllocedIso;
  128.     ULONG  AllocedInterrupt_1ms;
  129.     ULONG  AllocedInterrupt_2ms;
  130.     ULONG  AllocedInterrupt_4ms;
  131.     ULONG  AllocedInterrupt_8ms;
  132.     ULONG  AllocedInterrupt_16ms;
  133.     ULONG  AllocedInterrupt_32ms;
  134. } USB_BANDWIDTH_INFO, *PUSB_BANDWIDTH_INFO;
  135.  
  136. typedef struct _USBUSER_REQUEST_HEADER {
  137.     ULONG  UsbUserRequest;
  138.     USB_USER_ERROR_CODE  UsbUserStatusCode;
  139.     ULONG  RequestBufferLength;
  140.     ULONG  ActualBufferLength;
  141. } USBUSER_REQUEST_HEADER, *PUSBUSER_REQUEST_HEADER;
  142.  
  143. typedef struct _USBUSER_BANDWIDTH_INFO_REQUEST {
  144.     USBUSER_REQUEST_HEADER  Header;
  145.     USB_BANDWIDTH_INFO  BandwidthInformation;
  146. } USBUSER_BANDWIDTH_INFO_REQUEST, *PUSBUSER_BANDWIDTH_INFO_REQUEST;
  147.  
  148. typedef struct _USB_BUS_STATISTICS_0 {
  149.     ULONG  DeviceCount;
  150.     LARGE_INTEGER  CurrentSystemTime;
  151.     ULONG  CurrentUsbFrame;
  152.     ULONG  BulkBytes;
  153.     ULONG  IsoBytes;
  154.     ULONG  InterruptBytes;
  155.     ULONG  ControlDataBytes;
  156.     ULONG  PciInterruptCount;
  157.     ULONG  HardResetCount;
  158.     ULONG  WorkerSignalCount;
  159.     ULONG  CommonBufferBytes;
  160.     ULONG  WorkerIdleTimeMs;
  161.     BOOLEAN  RootHubEnabled;
  162.     UCHAR  RootHubDevicePowerState;
  163.     UCHAR  Unused;
  164.     UCHAR  NameIndex;
  165. } USB_BUS_STATISTICS_0, *PUSB_BUS_STATISTICS_0;
  166.  
  167. typedef struct _USBUSER_BUS_STATISTICS_0_REQUEST {
  168.     USBUSER_REQUEST_HEADER  Header;
  169.     USB_BUS_STATISTICS_0  BusStatistics0;
  170. } USBUSER_BUS_STATISTICS_0_REQUEST, *PUSBUSER_BUS_STATISTICS_0_REQUEST;
  171.  
  172. /* USB_CONTROLLER_INFO_0.HcFeatureFlags constants */
  173. #define USB_HC_FEATURE_FLAG_PORT_POWER_SWITCHING  0x00000001
  174. #define USB_HC_FEATURE_FLAG_SEL_SUSPEND           0x00000002
  175. #define USB_HC_FEATURE_LEGACY_BIOS                0x00000004
  176.  
  177. typedef struct _USB_CLOSE_RAW_DEVICE_PARAMETERS {
  178.   ULONG  xxx;
  179. } USB_CLOSE_RAW_DEVICE_PARAMETERS , *PUSB_CLOSE_RAW_DEVICE_PARAMETERS;
  180.  
  181. typedef struct _USBUSER_CLOSE_RAW_DEVICE {
  182.     USBUSER_REQUEST_HEADER  Header;
  183.     USB_CLOSE_RAW_DEVICE_PARAMETERS  Parameters;
  184. } USBUSER_CLOSE_RAW_DEVICE, *PUSBUSER_CLOSE_RAW_DEVICE;
  185.  
  186. typedef struct _USB_CONTROLLER_INFO_0 {
  187.   ULONG  PciVendorId;
  188.   ULONG  PciDeviceId;
  189.   ULONG  PciRevision;
  190.   ULONG  NumberOfRootPorts;
  191.   USB_CONTROLLER_FLAVOR  ControllerFlavor;
  192.   ULONG  HcFeatureFlags;
  193. } USB_CONTROLLER_INFO_0 , *PUSB_CONTROLLER_INFO_0;
  194.  
  195. typedef struct _USBUSER_CONTROLLER_INFO_0 {
  196.   USBUSER_REQUEST_HEADER  Header;
  197.   USB_CONTROLLER_INFO_0  Info0;    
  198. } USBUSER_CONTROLLER_INFO_0, *PUSBUSER_CONTROLLER_INFO_0;
  199.  
  200. typedef struct _USB_DRIVER_VERSION_PARAMETERS {
  201.     ULONG  DriverTrackingCode;
  202.     ULONG  USBDI_Version;
  203.     ULONG  USBUSER_Version;
  204.     BOOLEAN  CheckedPortDriver;
  205.     BOOLEAN  CheckedMiniportDriver;
  206.     USHORT  USB_Version;
  207. } USB_DRIVER_VERSION_PARAMETERS , *PUSB_DRIVER_VERSION_PARAMETERS;
  208.  
  209. typedef struct _USBUSER_GET_DRIVER_VERSION {
  210.     USBUSER_REQUEST_HEADER  Header;
  211.     USB_DRIVER_VERSION_PARAMETERS  Parameters;    
  212. } USBUSER_GET_DRIVER_VERSION, *PUSBUSER_GET_DRIVER_VERSION;
  213.  
  214. typedef struct _USB_OPEN_RAW_DEVICE_PARAMETERS {
  215.     USHORT  PortStatus;
  216.     USHORT  MaxPacketEp0;
  217. } USB_OPEN_RAW_DEVICE_PARAMETERS , *PUSB_OPEN_RAW_DEVICE_PARAMETERS;
  218.  
  219. typedef struct _USBUSER_OPEN_RAW_DEVICE {
  220.     USBUSER_REQUEST_HEADER  Header;
  221.     USB_OPEN_RAW_DEVICE_PARAMETERS  Parameters;    
  222. } USBUSER_OPEN_RAW_DEVICE, *PUSBUSER_OPEN_RAW_DEVICE;
  223.  
  224. typedef enum _WDMUSB_POWER_STATE {
  225.     WdmUsbPowerNotMapped = 0,
  226.     WdmUsbPowerSystemUnspecified = 100,
  227.     WdmUsbPowerSystemWorking,
  228.     WdmUsbPowerSystemSleeping1,
  229.     WdmUsbPowerSystemSleeping2,
  230.     WdmUsbPowerSystemSleeping3,
  231.     WdmUsbPowerSystemHibernate,
  232.     WdmUsbPowerSystemShutdown,
  233.     WdmUsbPowerDeviceUnspecified = 200,
  234.     WdmUsbPowerDeviceD0,
  235.     WdmUsbPowerDeviceD1,
  236.     WdmUsbPowerDeviceD2,
  237.     WdmUsbPowerDeviceD3
  238. } WDMUSB_POWER_STATE;
  239.  
  240. typedef struct _USB_POWER_INFO {
  241.     WDMUSB_POWER_STATE  SystemState;
  242.     WDMUSB_POWER_STATE  HcDevicePowerState;
  243.     WDMUSB_POWER_STATE  HcDeviceWake;
  244.     WDMUSB_POWER_STATE  HcSystemWake; 
  245.     WDMUSB_POWER_STATE  RhDevicePowerState;
  246.     WDMUSB_POWER_STATE  RhDeviceWake;
  247.     WDMUSB_POWER_STATE  RhSystemWake; 
  248.     WDMUSB_POWER_STATE  LastSystemSleepState; 
  249.     BOOLEAN  CanWakeup;
  250.     BOOLEAN  IsPowered;
  251. } USB_POWER_INFO, *PUSB_POWER_INFO;
  252.  
  253. typedef struct _USBUSER_POWER_INFO_REQUEST {
  254.     USBUSER_REQUEST_HEADER  Header;
  255.     USB_POWER_INFO  PowerInformation;
  256. } USBUSER_POWER_INFO_REQUEST, *PUSBUSER_POWER_INFO_REQUEST;
  257.  
  258. typedef struct _USB_UNICODE_NAME {
  259.     ULONG  Length;
  260.     WCHAR  String[1];
  261. } USB_UNICODE_NAME, *PUSB_UNICODE_NAME;
  262.  
  263. typedef struct _USBUSER_CONTROLLER_UNICODE_NAME {
  264.     USBUSER_REQUEST_HEADER  Header;
  265.   USB_UNICODE_NAME  UnicodeName;
  266. } USBUSER_CONTROLLER_UNICODE_NAME, *PUSBUSER_CONTROLLER_UNICODE_NAME;
  267.  
  268. typedef struct _USB_PASS_THRU_PARAMETERS {
  269.     GUID  FunctionGUID;
  270.     ULONG  ParameterLength;
  271.     UCHAR  Parameters[4];
  272. } USB_PASS_THRU_PARAMETERS, *PUSB_PASS_THRU_PARAMETERS;
  273.  
  274. typedef struct _USBUSER_PASS_THRU_REQUEST {
  275.     USBUSER_REQUEST_HEADER  Header;
  276.     USB_PASS_THRU_PARAMETERS  PassThru;
  277. } USBUSER_PASS_THRU_REQUEST, *PUSBUSER_PASS_THRU_REQUEST;
  278.  
  279. typedef struct _USBUSER_RAW_RESET_ROOT_PORT {
  280.     USBUSER_REQUEST_HEADER  Header;
  281.     RAW_RESET_PORT_PARAMETERS  Parameters;
  282. } USBUSER_RAW_RESET_ROOT_PORT, *PUSBUSER_RAW_RESET_ROOT_PORT;
  283.  
  284. typedef struct _USBUSER_SEND_ONE_PACKET {
  285.     USBUSER_REQUEST_HEADER  Header;
  286.     PACKET_PARAMETERS  PacketParameters;
  287. } USBUSER_SEND_ONE_PACKET, *PUSBUSER_SEND_ONE_PACKET;
  288.  
  289. typedef struct _USB_SEND_RAW_COMMAND_PARAMETERS {
  290.     UCHAR  Usb_bmRequest;
  291.     UCHAR  Usb_bRequest;
  292.     USHORT  Usb_wVlaue;
  293.     USHORT  Usb_wIndex;
  294.     USHORT  Usb_wLength;
  295.     USHORT  DeviceAddress;
  296.     USHORT  MaximumPacketSize;
  297.     ULONG  Timeout;
  298.     ULONG  DataLength;
  299.     USBD_STATUS  UsbdStatusCode;
  300.     UCHAR  Data[4];
  301. } USB_SEND_RAW_COMMAND_PARAMETERS, *PUSB_SEND_RAW_COMMAND_PARAMETERS;
  302.  
  303. typedef struct _USBUSER_SEND_RAW_COMMAND {
  304.     USBUSER_REQUEST_HEADER  Header;
  305.     USB_SEND_RAW_COMMAND_PARAMETERS  Parameters;
  306. } USBUSER_SEND_RAW_COMMAND, *PUSBUSER_SEND_RAW_COMMAND;
  307.  
  308. /* USB_USB2HW_VERSION_PARAMETERS.Usb2HwRevision constants */
  309. #define USB2HW_UNKNOWN                    0x00
  310. #define USB2HW_A0                         0xA0
  311. #define USB2HW_A1                         0xA1
  312. #define USB2HW_B0                         0xB0
  313.  
  314. typedef struct _USB_USB2HW_VERSION_PARAMETERS {
  315.   UCHAR  Usb2HwRevision;
  316. } USB_USB2HW_VERSION_PARAMETERS, *PUSB_USB2HW_VERSION_PARAMETERS;
  317.  
  318. typedef struct _USBUSER_GET_USB2HW_VERSION {
  319.     USBUSER_REQUEST_HEADER  Header;
  320.     USB_USB2HW_VERSION_PARAMETERS  Parameters;
  321. } USBUSER_GET_USB2HW_VERSION, *PUSBUSER_GET_USB2HW_VERSION;
  322.  
  323. #pragma pack(pop)
  324.  
  325. #ifdef __cplusplus
  326. }
  327. #endif
  328.  
  329. #endif /* __USBUSER_H */
  330.