ReactOS Fundraising Campaign 2012
 
€ 4,410 / € 30,000

Information | Donate

Home | Info | Community | Development | myReactOS | Contact Us

  1. Home
  2. Community
  3. Development
  4. myReactOS
  5. Fundraiser 2012

  1. Main Page
  2. Alphabetical List
  3. Data Structures
  4. Directories
  5. File List
  6. Data Fields
  7. Globals
  8. Related Pages

ReactOS Development > Doxygen

usbscan.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 doxygen 1.7.6.1

ReactOS is a registered trademark or a trademark of ReactOS Foundation in the United States and other countries.