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)