www.pudn.com > data-bulktransfer.rar > usbdriver.h


#ifndef USBDRIVER_H 
#define USBDRIVER_H 
#endif 
 
#ifdef DRIVER 
#include "wdm.h" 
#include "usbdi.h" 
#include "usbdlib.h" 
#include  
#endif 
 
#ifndef _BYTE_DEFINED 
#define _BYTE_DEFINED 
typedef unsigned char BYTE; 
#endif  
 
#ifndef _WORD_DEFINED 
#define _WORD_DEFINED 
typedef unsigned short WORD; 
#endif  
 
typedef struct _VENDOR_REQUEST_IN 
{ 
    BYTE    bRequest; 
    WORD    wValue; 
    WORD    wIndex; 
    WORD    wLength; 
    BYTE    direction; 
    BYTE    bData; 
} VENDOR_REQUEST_IN, *PVENDOR_REQUEST_IN; 
 
typedef struct _GET_STRING_DESCRIPTOR_IN 
{ 
   UCHAR    Index; 
   USHORT   LanguageId; 
} GET_STRING_DESCRIPTOR_IN, *PGET_STRING_DESCRIPTOR_IN; 
 
typedef struct _BULK_TRANSFER_CONTROL 
{ 
   ULONG pipeNum; 
} BULK_TRANSFER_CONTROL, *PBULK_TRANSFER_CONTROL; 
 
#ifdef DRIVER 
 
typedef struct tagDEVICE_EXTENSION 
{ 
   PDEVICE_OBJECT PhysicalDeviceObject;   
   PDEVICE_OBJECT LowerDeviceObject;	 
   BOOLEAN Stop;     
 
   USBD_CONFIGURATION_HANDLE ConfigurationHandle; 
 
   PUSB_DEVICE_DESCRIPTOR DeviceDescriptor; 
 
   PUSBD_INTERFACE_INFORMATION Interface; 
 
   ULONG OpenHandles; 
 
   WCHAR DeviceLinkName[64]; 
 
   LONG Usages; 
 
   KEVENT evRemove; 
 
   BOOLEAN Removing; 
    
} DEVICE_EXTENSION, *PDEVICE_EXTENSION; 
 
 
NTSTATUS TestAddDevice(IN PDRIVER_OBJECT DriverObject, 
                       IN PDEVICE_OBJECT PhysicalDeviceObject); 
VOID TestDrvUnload(IN PDRIVER_OBJECT DriverObject); 
NTSTATUS TestPnpIrp(IN PDEVICE_OBJECT fdo, IN PIRP Irp); 
NTSTATUS TestPowerIrp(IN PDEVICE_OBJECT fdo,IN PIRP Irp); 
NTSTATUS TestCreate(IN PDEVICE_OBJECT fdo, IN PIRP Irp); 
NTSTATUS TestClose(IN PDEVICE_OBJECT fdo, IN PIRP Irp); 
NTSTATUS TestIOCTL(IN PDEVICE_OBJECT fdo,IN PIRP Irp); 
BOOLEAN LockDevice(IN PDEVICE_OBJECT fdo); 
void UnlockDevice(PDEVICE_OBJECT fdo); 
NTSTATUS CompleteRequest(IN PIRP Irp,IN NTSTATUS status,IN ULONG info); 
NTSTATUS UsbCallUSBDI(IN PDEVICE_OBJECT fdo,IN PURB Urb); 
 
#endif  
 
 
#define Ezusb_IOCTL_INDEX  0x0800 
 
#define IOCTL_Ezusb_GET_DEVICE_DESCRIPTOR CTL_CODE(FILE_DEVICE_UNKNOWN,  \ 
                                                   Ezusb_IOCTL_INDEX+0,\ 
                                                   METHOD_BUFFERED,  \ 
                                                   FILE_ANY_ACCESS) 
 
#define IOCTL_Ezusb_GET_CONFIGURATION_DESCRIPTOR CTL_CODE(FILE_DEVICE_UNKNOWN,  \ 
                                                   Ezusb_IOCTL_INDEX+1,\ 
                                                   METHOD_BUFFERED,  \ 
                                                   FILE_ANY_ACCESS) 
 
#define IOCTL_Ezusb_GET_STRING_DESCRIPTOR CTL_CODE(FILE_DEVICE_UNKNOWN,  \ 
                                                   Ezusb_IOCTL_INDEX+2,\ 
                                                   METHOD_BUFFERED,  \ 
                                                   FILE_ANY_ACCESS) 
 
#define IOCTL_EZUSB_BULK_WRITE            CTL_CODE(FILE_DEVICE_UNKNOWN,  \ 
                                                   Ezusb_IOCTL_INDEX+3,\ 
                                                   METHOD_IN_DIRECT,  \ 
                                                   FILE_ANY_ACCESS) 
 
#define IOCTL_EZUSB_BULK_READ             CTL_CODE(FILE_DEVICE_UNKNOWN,  \ 
                                                   Ezusb_IOCTL_INDEX+4,\ 
                                                   METHOD_OUT_DIRECT,  \ 
                                                   FILE_ANY_ACCESS) 
 
#define IOCTL_EZUSB_GET_CURRENT_FRAME_NUMBER  CTL_CODE(FILE_DEVICE_UNKNOWN,  \ 
                                                   Ezusb_IOCTL_INDEX+5,\ 
                                                   METHOD_BUFFERED,  \ 
                                                   FILE_ANY_ACCESS) 
 
#define IOCTL_Ezusb_RESETPIPE             CTL_CODE(FILE_DEVICE_UNKNOWN,  \ 
                                                   Ezusb_IOCTL_INDEX+6,\ 
                                                   METHOD_IN_DIRECT,  \ 
                                                   FILE_ANY_ACCESS) 
 
#define IOCTL_Ezusb_ABORTPIPE             CTL_CODE(FILE_DEVICE_UNKNOWN,  \ 
                                                   Ezusb_IOCTL_INDEX+7,\ 
                                                   METHOD_IN_DIRECT,  \ 
                                                   FILE_ANY_ACCESS)