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.
usbscan.h
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 #ifndef __USBSCAN_H 00024 #define __USBSCAN_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 00036 #define FILE_DEVICE_USB_SCAN 0x8000 00037 #define IOCTL_INDEX 0x0800 00038 00039 #define IOCTL_CANCEL_IO \ 00040 CTL_CODE(FILE_DEVICE_USB_SCAN, IOCTL_INDEX + 1, METHOD_BUFFERED,FILE_ANY_ACCESS) 00041 00042 #define IOCTL_GET_VERSION \ 00043 CTL_CODE(FILE_DEVICE_USB_SCAN, IOCTL_INDEX + 0, METHOD_BUFFERED,FILE_ANY_ACCESS) 00044 00045 #define IOCTL_GET_CHANNEL_ALIGN_RQST \ 00046 CTL_CODE(FILE_DEVICE_USB_SCAN, IOCTL_INDEX + 5, METHOD_BUFFERED,FILE_ANY_ACCESS) 00047 00048 #define IOCTL_GET_DEVICE_DESCRIPTOR \ 00049 CTL_CODE(FILE_DEVICE_USB_SCAN, IOCTL_INDEX + 6, METHOD_BUFFERED,FILE_ANY_ACCESS) 00050 00051 #define IOCTL_GET_PIPE_CONFIGURATION \ 00052 CTL_CODE(FILE_DEVICE_USB_SCAN, IOCTL_INDEX + 10,METHOD_BUFFERED,FILE_ANY_ACCESS) 00053 00054 #define IOCTL_GET_USB_DESCRIPTOR \ 00055 CTL_CODE(FILE_DEVICE_USB_SCAN, IOCTL_INDEX + 8, METHOD_BUFFERED,FILE_ANY_ACCESS) 00056 00057 #define IOCTL_READ_REGISTERS \ 00058 CTL_CODE(FILE_DEVICE_USB_SCAN, IOCTL_INDEX + 3, METHOD_BUFFERED,FILE_ANY_ACCESS) 00059 00060 #define IOCTL_RESET_PIPE \ 00061 CTL_CODE(FILE_DEVICE_USB_SCAN, IOCTL_INDEX + 7, METHOD_BUFFERED,FILE_ANY_ACCESS) 00062 00063 #define IOCTL_SEND_USB_REQUEST \ 00064 CTL_CODE(FILE_DEVICE_USB_SCAN, IOCTL_INDEX + 9, METHOD_BUFFERED,FILE_ANY_ACCESS) 00065 00066 #define IOCTL_SET_TIMEOUT \ 00067 CTL_CODE(FILE_DEVICE_USB_SCAN, IOCTL_INDEX + 11,METHOD_BUFFERED,FILE_ANY_ACCESS) 00068 00069 #define IOCTL_WAIT_ON_DEVICE_EVENT \ 00070 CTL_CODE(FILE_DEVICE_USB_SCAN, IOCTL_INDEX + 2, METHOD_BUFFERED,FILE_ANY_ACCESS) 00071 00072 #define IOCTL_WRITE_REGISTERS \ 00073 CTL_CODE(FILE_DEVICE_USB_SCAN, IOCTL_INDEX + 4, METHOD_BUFFERED, FILE_ANY_ACCESS) 00074 00075 00076 #define MAX_NUM_PIPES 8 00077 00078 #define BULKIN_FLAG 0x80 00079 00080 typedef struct _CHANNEL_INFO { 00081 /*OUT*/ ULONG EventChannelSize; 00082 /*OUT*/ ULONG uReadDataAlignment; 00083 /*OUT*/ ULONG uWriteDataAlignment; 00084 }CHANNEL_INFO, *PCHANNEL_INFO; 00085 00086 typedef struct _DEVICE_DESCRIPTOR { 00087 /*OUT*/ USHORT usVendorId; 00088 /*OUT*/ USHORT usProductId; 00089 /*OUT*/ USHORT usBcdDevice; 00090 /*OUT*/ USHORT usLanguageId; 00091 } DEVICE_DESCRIPTOR, *PDEVICE_DESCRIPTOR; 00092 00093 typedef struct _DRV_VERSION { 00094 /*OUT*/ ULONG major; 00095 /*OUT*/ ULONG minor; 00096 /*OUT*/ ULONG internal; 00097 } DRV_VERSION, *PDRV_VERSION; 00098 00099 typedef struct _IO_BLOCK { 00100 /*IN*/ ULONG uOffset; 00101 /*IN*/ ULONG uLength; 00102 /*IN OUT*/ PUCHAR pbyData; 00103 /*IN*/ ULONG uIndex; 00104 } IO_BLOCK, *PIO_BLOCK; 00105 00106 typedef struct _IO_BLOCK_EX { 00107 /*IN*/ ULONG uOffset; 00108 /*IN*/ ULONG uLength; 00109 /*IN OUT*/ PUCHAR pbyData; 00110 /*IN*/ ULONG uIndex; 00111 /*IN*/ UCHAR bRequest; 00112 /*IN*/ UCHAR bmRequestType; 00113 /*IN*/ UCHAR fTransferDirectionIn; 00114 } IO_BLOCK_EX, *PIO_BLOCK_EX; 00115 00116 typedef struct _USBSCAN_GET_DESCRIPTOR { 00117 /*IN*/ UCHAR DescriptorType; 00118 /*IN*/ UCHAR Index; 00119 /*IN*/ USHORT LanguageId; 00120 } USBSCAN_GET_DESCRIPTOR, *PUSBSCAN_GET_DESCRIPTOR; 00121 00122 typedef enum _RAW_PIPE_TYPE { 00123 USBSCAN_PIPE_CONTROL, 00124 USBSCAN_PIPE_ISOCHRONOUS, 00125 USBSCAN_PIPE_BULK, 00126 USBSCAN_PIPE_INTERRUPT 00127 } RAW_PIPE_TYPE; 00128 00129 typedef struct _USBSCAN_PIPE_INFORMATION { 00130 USHORT MaximumPacketSize; 00131 UCHAR EndpointAddress; 00132 UCHAR Interval; 00133 RAW_PIPE_TYPE PipeType; 00134 } USBSCAN_PIPE_INFORMATION, *PUSBSCAN_PIPE_INFORMATION; 00135 00136 typedef struct _USBSCAN_PIPE_CONFIGURATION { 00137 /*OUT*/ ULONG NumberOfPipes; 00138 /*OUT*/ USBSCAN_PIPE_INFORMATION PipeInfo[MAX_NUM_PIPES]; 00139 } USBSCAN_PIPE_CONFIGURATION, *PUSBSCAN_PIPE_CONFIGURATION; 00140 00141 typedef struct _USBSCAN_TIMEOUT { 00142 /*IN*/ ULONG TimeoutRead; 00143 /*IN*/ ULONG TimeoutWrite; 00144 /*IN*/ ULONG TimeoutEvent; 00145 } USBSCAN_TIMEOUT, *PUSBSCAN_TIMEOUT; 00146 00147 typedef enum _PIPE_TYPE { 00148 EVENT_PIPE, 00149 READ_DATA_PIPE, 00150 WRITE_DATA_PIPE, 00151 ALL_PIPE 00152 } PIPE_TYPE; 00153 00154 #ifdef __cplusplus 00155 } 00156 #endif 00157 00158 #endif /* __USBSCAN_H */
Generated on Tue Jul 12 2022 19:59:55 by
