zig

fork of https://codeberg.org/ziglang/zig
Log | Files | Refs | README | LICENSE

usbscan.h (3558B) - Raw


      1 /*
      2  * usbscan.h
      3  *
      4  * This file is part of the mingw-w64 runtime package.
      5  * No warranty is given; refer to the file DISCLAIMER within this package.
      6  */
      7 
      8 #ifndef _USBSCAN_H_
      9 #define _USBSCAN_H_
     10 
     11 #include <winapifamily.h>
     12 
     13 #if WINAPI_FAMILY_PARTITION (WINAPI_PARTITION_DESKTOP)
     14 
     15 #ifndef MAX_NUM_PIPES
     16 #define MAX_NUM_PIPES 8
     17 #endif
     18 
     19 #define BULKIN_FLAG 0x80
     20 
     21 #pragma pack(push, 8)
     22 typedef struct _DRV_VERSION {
     23   unsigned major;
     24   unsigned minor;
     25   unsigned internal;
     26 } DRV_VERSION,*PDRV_VERSION;
     27 
     28 typedef struct _IO_BLOCK {
     29   unsigned uOffset;
     30   unsigned uLength;
     31   PUCHAR pbyData;
     32   unsigned uIndex;
     33 } IO_BLOCK,*PIO_BLOCK;
     34 
     35 typedef struct _IO_BLOCK_EX {
     36   unsigned uOffset;
     37   unsigned uLength;
     38   PUCHAR pbyData;
     39   unsigned uIndex;
     40   UCHAR bRequest;
     41   UCHAR bmRequestType;
     42   UCHAR fTransferDirectionIn;
     43 } IO_BLOCK_EX,*PIO_BLOCK_EX;
     44 
     45 typedef struct _CHANNEL_INFO {
     46   unsigned EventChannelSize;
     47   unsigned uReadDataAlignment;
     48   unsigned uWriteDataAlignment;
     49 } CHANNEL_INFO,*PCHANNEL_INFO;
     50 
     51 typedef enum {
     52   EVENT_PIPE,
     53   READ_DATA_PIPE,
     54   WRITE_DATA_PIPE,
     55   ALL_PIPE
     56 } PIPE_TYPE;
     57 
     58 typedef struct _USBSCAN_GET_DESCRIPTOR {
     59   UCHAR DescriptorType;
     60   UCHAR Index;
     61   USHORT LanguageId;
     62 } USBSCAN_GET_DESCRIPTOR,*PUSBSCAN_GET_DESCRIPTOR;
     63 
     64 typedef struct _DEVICE_DESCRIPTOR {
     65   USHORT usVendorId;
     66   USHORT usProductId;
     67   USHORT usBcdDevice;
     68   USHORT usLanguageId;
     69 } DEVICE_DESCRIPTOR,*PDEVICE_DESCRIPTOR;
     70 
     71 typedef enum _RAW_PIPE_TYPE {
     72   USBSCAN_PIPE_CONTROL,
     73   USBSCAN_PIPE_ISOCHRONOUS,
     74   USBSCAN_PIPE_BULK,
     75   USBSCAN_PIPE_INTERRUPT
     76 } RAW_PIPE_TYPE;
     77 
     78 typedef struct _USBSCAN_PIPE_INFORMATION {
     79   USHORT MaximumPacketSize;
     80   UCHAR EndpointAddress;
     81   UCHAR Interval;
     82   RAW_PIPE_TYPE PipeType;
     83 } USBSCAN_PIPE_INFORMATION,*PUSBSCAN_PIPE_INFORMATION;
     84 
     85 typedef struct _USBSCAN_PIPE_CONFIGURATION {
     86   ULONG NumberOfPipes;
     87   USBSCAN_PIPE_INFORMATION PipeInfo[MAX_NUM_PIPES];
     88 } USBSCAN_PIPE_CONFIGURATION,*PUSBSCAN_PIPE_CONFIGURATION;
     89 
     90 typedef struct _USBSCAN_TIMEOUT {
     91   ULONG TimeoutRead;
     92   ULONG TimeoutWrite;
     93   ULONG TimeoutEvent;
     94 } USBSCAN_TIMEOUT,*PUSBSCAN_TIMEOUT;
     95 #pragma pack(pop)
     96 
     97 #define FILE_DEVICE_USB_SCAN 0x8000
     98 #define IOCTL_INDEX 0x0800
     99 #define ALL ALL_PIPE
    100 #define IOCTL_ABORT_PIPE IOCTL_CANCEL_IO
    101 
    102 #define IOCTL_GET_VERSION CTL_CODE (FILE_DEVICE_USB_SCAN, IOCTL_INDEX, METHOD_BUFFERED, FILE_ANY_ACCESS)
    103 #define IOCTL_CANCEL_IO CTL_CODE (FILE_DEVICE_USB_SCAN, IOCTL_INDEX+1, METHOD_BUFFERED, FILE_ANY_ACCESS)
    104 #define IOCTL_WAIT_ON_DEVICE_EVENT CTL_CODE (FILE_DEVICE_USB_SCAN, IOCTL_INDEX+2, METHOD_BUFFERED, FILE_ANY_ACCESS)
    105 #define IOCTL_READ_REGISTERS CTL_CODE (FILE_DEVICE_USB_SCAN, IOCTL_INDEX+3, METHOD_BUFFERED, FILE_ANY_ACCESS)
    106 #define IOCTL_WRITE_REGISTERS CTL_CODE (FILE_DEVICE_USB_SCAN, IOCTL_INDEX+4, METHOD_BUFFERED, FILE_ANY_ACCESS)
    107 #define IOCTL_GET_CHANNEL_ALIGN_RQST CTL_CODE (FILE_DEVICE_USB_SCAN, IOCTL_INDEX+5, METHOD_BUFFERED, FILE_ANY_ACCESS)
    108 #define IOCTL_GET_DEVICE_DESCRIPTOR CTL_CODE (FILE_DEVICE_USB_SCAN, IOCTL_INDEX+6, METHOD_BUFFERED, FILE_ANY_ACCESS)
    109 #define IOCTL_RESET_PIPE CTL_CODE (FILE_DEVICE_USB_SCAN, IOCTL_INDEX+7, METHOD_BUFFERED, FILE_ANY_ACCESS)
    110 #define IOCTL_GET_USB_DESCRIPTOR CTL_CODE (FILE_DEVICE_USB_SCAN, IOCTL_INDEX+8, METHOD_BUFFERED, FILE_ANY_ACCESS)
    111 #define IOCTL_SEND_USB_REQUEST CTL_CODE (FILE_DEVICE_USB_SCAN, IOCTL_INDEX+9, METHOD_BUFFERED, FILE_ANY_ACCESS)
    112 #define IOCTL_GET_PIPE_CONFIGURATION CTL_CODE (FILE_DEVICE_USB_SCAN, IOCTL_INDEX+10, METHOD_BUFFERED, FILE_ANY_ACCESS)
    113 #define IOCTL_SET_TIMEOUT CTL_CODE (FILE_DEVICE_USB_SCAN, IOCTL_INDEX+11, METHOD_BUFFERED, FILE_ANY_ACCESS)
    114 
    115 #endif
    116 
    117 #endif