Home | Info | Community | Development | myReactOS | Contact Us
ReactOS Development > Doxygenusbscan.h
Go to the documentation of this file.
00001 /* 00002 * usbscan.h 00003 * 00004 * USB scanner definitions 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 #pragma once 00024 00025 #ifdef __cplusplus 00026 extern "C" { 00027 #endif 00028 00029 #if (NTDDI_VERSION >= NTDDI_WIN2K) 00030 00031 #pragma pack(push,8) 00032 00033 #ifndef MAX_NUM_PIPES 00034 #define MAX_NUM_PIPES 8 00035 #endif 00036 00037 #define BULKIN_FLAG 0x80 00038 00039 typedef struct _DRV_VERSION { 00040 _Out_ ULONG major; 00041 _Out_ ULONG minor; 00042 _Out_ ULONG internal; 00043 } DRV_VERSION, *PDRV_VERSION; 00044 00045 typedef struct _IO_BLOCK { 00046 _In_ ULONG uOffset; 00047 _In_ ULONG uLength; 00048 _Inout_updates_bytes_(uLength) PUCHAR pbyData; 00049 _In_ ULONG uIndex; 00050 } IO_BLOCK, *PIO_BLOCK; 00051 00052 typedef struct _IO_BLOCK_EX { 00053 _In_ ULONG uOffset; 00054 _In_ ULONG uLength; 00055 _Inout_updates_bytes_(uLength) PUCHAR pbyData; 00056 _In_ ULONG uIndex; 00057 _In_ UCHAR bRequest; 00058 _In_ UCHAR bmRequestType; 00059 _In_ UCHAR fTransferDirectionIn; 00060 } IO_BLOCK_EX, *PIO_BLOCK_EX; 00061 00062 typedef struct _CHANNEL_INFO { 00063 _Out_ ULONG EventChannelSize; 00064 _Out_ ULONG uReadDataAlignment; 00065 _Out_ ULONG uWriteDataAlignment; 00066 }CHANNEL_INFO, *PCHANNEL_INFO; 00067 00068 typedef enum _PIPE_TYPE { 00069 EVENT_PIPE, 00070 READ_DATA_PIPE, 00071 WRITE_DATA_PIPE, 00072 ALL_PIPE 00073 } PIPE_TYPE; 00074 00075 typedef struct _USBSCAN_GET_DESCRIPTOR { 00076 _In_ UCHAR DescriptorType; 00077 _In_ UCHAR Index; 00078 _In_ USHORT LanguageId; 00079 } USBSCAN_GET_DESCRIPTOR, *PUSBSCAN_GET_DESCRIPTOR; 00080 00081 typedef struct _DEVICE_DESCRIPTOR { 00082 _Out_ USHORT usVendorId; 00083 _Out_ USHORT usProductId; 00084 _Out_ USHORT usBcdDevice; 00085 _Out_ USHORT usLanguageId; 00086 } DEVICE_DESCRIPTOR, *PDEVICE_DESCRIPTOR; 00087 00088 typedef enum _RAW_PIPE_TYPE { 00089 USBSCAN_PIPE_CONTROL, 00090 USBSCAN_PIPE_ISOCHRONOUS, 00091 USBSCAN_PIPE_BULK, 00092 USBSCAN_PIPE_INTERRUPT 00093 } RAW_PIPE_TYPE; 00094 00095 typedef struct _USBSCAN_PIPE_INFORMATION { 00096 USHORT MaximumPacketSize; 00097 UCHAR EndpointAddress; 00098 UCHAR Interval; 00099 RAW_PIPE_TYPE PipeType; 00100 } USBSCAN_PIPE_INFORMATION, *PUSBSCAN_PIPE_INFORMATION; 00101 00102 typedef struct _USBSCAN_PIPE_CONFIGURATION { 00103 _Out_ ULONG NumberOfPipes; 00104 _Out_writes_(NumberOfPipes) USBSCAN_PIPE_INFORMATION PipeInfo[MAX_NUM_PIPES]; 00105 } USBSCAN_PIPE_CONFIGURATION, *PUSBSCAN_PIPE_CONFIGURATION; 00106 00107 #if (NTDDI_VERSION >= NTDDI_WINXP) 00108 typedef struct _USBSCAN_TIMEOUT { 00109 IN ULONG TimeoutRead; 00110 IN ULONG TimeoutWrite; 00111 IN ULONG TimeoutEvent; 00112 } USBSCAN_TIMEOUT, *PUSBSCAN_TIMEOUT; 00113 #endif 00114 00115 #define FILE_DEVICE_USB_SCAN 0x8000 00116 #define IOCTL_INDEX 0x0800 00117 00118 #define IOCTL_GET_VERSION \ 00119 CTL_CODE(FILE_DEVICE_USB_SCAN, IOCTL_INDEX + 0, METHOD_BUFFERED,FILE_ANY_ACCESS) 00120 00121 #define IOCTL_CANCEL_IO \ 00122 CTL_CODE(FILE_DEVICE_USB_SCAN, IOCTL_INDEX + 1, METHOD_BUFFERED,FILE_ANY_ACCESS) 00123 00124 #define IOCTL_WAIT_ON_DEVICE_EVENT \ 00125 CTL_CODE(FILE_DEVICE_USB_SCAN, IOCTL_INDEX + 2, METHOD_BUFFERED,FILE_ANY_ACCESS) 00126 00127 #define IOCTL_READ_REGISTERS \ 00128 CTL_CODE(FILE_DEVICE_USB_SCAN, IOCTL_INDEX + 3, METHOD_BUFFERED,FILE_ANY_ACCESS) 00129 00130 #define IOCTL_WRITE_REGISTERS \ 00131 CTL_CODE(FILE_DEVICE_USB_SCAN, IOCTL_INDEX + 4, METHOD_BUFFERED, FILE_ANY_ACCESS) 00132 00133 #define IOCTL_GET_CHANNEL_ALIGN_RQST \ 00134 CTL_CODE(FILE_DEVICE_USB_SCAN, IOCTL_INDEX + 5, METHOD_BUFFERED,FILE_ANY_ACCESS) 00135 00136 #define IOCTL_GET_DEVICE_DESCRIPTOR \ 00137 CTL_CODE(FILE_DEVICE_USB_SCAN, IOCTL_INDEX + 6, METHOD_BUFFERED,FILE_ANY_ACCESS) 00138 00139 #define IOCTL_RESET_PIPE \ 00140 CTL_CODE(FILE_DEVICE_USB_SCAN, IOCTL_INDEX + 7, METHOD_BUFFERED,FILE_ANY_ACCESS) 00141 00142 #define IOCTL_GET_USB_DESCRIPTOR \ 00143 CTL_CODE(FILE_DEVICE_USB_SCAN, IOCTL_INDEX + 8, METHOD_BUFFERED,FILE_ANY_ACCESS) 00144 00145 #define IOCTL_SEND_USB_REQUEST \ 00146 CTL_CODE(FILE_DEVICE_USB_SCAN, IOCTL_INDEX + 9, METHOD_BUFFERED,FILE_ANY_ACCESS) 00147 00148 #define IOCTL_GET_PIPE_CONFIGURATION \ 00149 CTL_CODE(FILE_DEVICE_USB_SCAN, IOCTL_INDEX + 10,METHOD_BUFFERED,FILE_ANY_ACCESS) 00150 00151 #if (NTDDI_VERSION >= NTDDI_WINXP) 00152 #define IOCTL_SET_TIMEOUT \ 00153 CTL_CODE(FILE_DEVICE_USB_SCAN, IOCTL_INDEX + 11,METHOD_BUFFERED,FILE_ANY_ACCESS) 00154 #endif 00155 00156 #pragma pack(pop) 00157 00158 #endif // (NTDDI_VERSION >= NTDDI_WIN2K) 00159 00160 #ifdef __cplusplus 00161 } 00162 #endif Generated on Sun May 27 2012 04:30:17 for ReactOS by
1.7.6.1
|