📄 ezusbsys.h
字号:
IN PDEVICE_OBJECT DeviceObject,
IN ULONG PipeNum
);
NTSTATUS
Myusb_AbortPipe(
IN PDEVICE_OBJECT DeviceObject,
IN USBD_PIPE_HANDLE PipeHandle
);
ULONG
Myusb_GetCurrentFrameNumber(
IN PDEVICE_OBJECT DeviceObject
);
NTSTATUS
Myusb_Read_Write_Direct(
IN PDEVICE_OBJECT DeviceObject,
IN PIRP Irp,
IN BOOLEAN Read
);
ULONG
Myusb_DownloadTest(
IN PDEVICE_OBJECT DeviceObject,
IN PVENDOR_REQUEST_IN pVendorRequest
);
NTSTATUS
Myusb_ResetParentPort(
IN IN PDEVICE_OBJECT DeviceObject
);
VOID
Myusb_Cleanup(
PDEVICE_OBJECT DeviceObject
);
ULONG
Myusb_GetDeviceDescriptor(
IN PDEVICE_OBJECT DeviceObject,
PVOID pvOutputBuffer
);
ULONG
Myusb_GetConfigDescriptor(
IN PDEVICE_OBJECT DeviceObject,
PVOID pvOutputBuffer,
ULONG ulngth
);
ULONG
Myusb_VendorRequest(
IN PDEVICE_OBJECT DeviceObject,
PVENDOR_REQUEST_IN pVendorRequest
);
ULONG
Myusb_GetCurrentConfig(
IN PDEVICE_OBJECT DeviceObject,
IN PVENDOR_REQUEST_IN pVendorRequest
);
ULONG
Myusb_GetCurrentInterface(
IN PDEVICE_OBJECT DeviceObject,
IN PVENDOR_REQUEST_IN pVendorRequest
);
PUSB_CONFIGURATION_DESCRIPTOR
GetConfigDescriptor(
IN PDEVICE_OBJECT DeviceObject
);
NTSTATUS
ConfigureDevice(
IN PDEVICE_OBJECT DeviceObject
);
NTSTATUS
SetInterface(
IN PDEVICE_OBJECT DeviceObject,
IN UCHAR InterfaceNumber,
IN UCHAR AlternateSetting
);
ULONG
Myusb_GetStringDescriptor(
IN PDEVICE_OBJECT DeviceObject,
UCHAR Index,
USHORT LanguageId,
PVOID pvOutputBuffer,
ULONG ulLength
);
NTSTATUS
Myusb_VendorRequest2(
IN PDEVICE_OBJECT DeviceObject,
IN PIRP Irp
);
NTSTATUS
ForwardAndWait(
IN PDEVICE_OBJECT DeviceObject,
IN PIRP Irp
);
NTSTATUS
Myusb_DefaultPnpHandler(
IN PDEVICE_OBJECT fdo,
IN PIRP Irp
);
NTSTATUS
Myusb_DispatchPnp(
IN PDEVICE_OBJECT DeviceObject,
IN PIRP Irp
);
NTSTATUS
Myusb_DispatchPower(
IN PDEVICE_OBJECT DeviceObject,
IN PIRP Irp
);
NTSTATUS
Myusb_HandleStartDevice(
IN PDEVICE_OBJECT DeviceObject,
IN PIRP Irp
);
NTSTATUS
Myusb_HandleRemoveDevice(
IN PDEVICE_OBJECT fdo,
IN PIRP Irp
);
NTSTATUS
OnRequestComplete(
IN PDEVICE_OBJECT DeviceObject,
IN PIRP Irp,
IN PKEVENT pev
);
NTSTATUS
CompleteRequest(
IN PIRP Irp,
IN NTSTATUS status,
IN ULONG info
);
BOOLEAN LockDevice(
IN PDEVICE_OBJECT fdo
);
void UnlockDevice(
PDEVICE_OBJECT fdo
);
NTSTATUS InitTransferObject(
IN OUT PISO_STREAM_OBJECT streamObject,
IN ULONG index
);
NTSTATUS Myusb_StartIsoTransfer(
IN PDEVICE_OBJECT fdo,
IN PIRP Irp
);
NTSTATUS IsoTransferComplete(
IN PDEVICE_OBJECT fdo,
IN PIRP Irp,
IN PVOID Context
);
NTSTATUS Myusb_StartIsoStream(
IN PDEVICE_OBJECT fdo,
IN PIRP Irp
);
NTSTATUS Myusb_CtrlTransfer(
PDEVICE_OBJECT fdo,
PUCHAR OutDataBuffer,
PMDL InMdl
);
NTSTATUS
TimeOut_CallUSBD(
IN PDEVICE_OBJECT DeviceObject,
IN PURB Urb,
IN USHORT nTimeOutS
);
NTSTATUS
OnComplete(
PDEVICE_OBJECT junk,
PIRP Irp,
PVOID pev
);
#endif //DRIVER section
///////////////////////////////////////////////////////
//
// IOCTL Definitions
//
// User mode applications wishing to send IOCTLs to a kernel mode driver
// must use this file to set up the correct type of IOCTL code permissions.
//
// Note: this file depends on the file DEVIOCTL.H which contains the macro
// definition for "CTL_CODE" below. Include that file before you include
// this one in your source code. DEVIOCTL.H is a Microsoft header file.
// DEVIOCTL.H is normally obtained by installing the Windows DDK.
//
///////////////////////////////////////////////////////
//
// Set the base of the IOCTL control codes. This is somewhat of an
// arbitrary base number, so you can change this if you want unique
// IOCTL codes. You should consult the Windows NT DDK for valid ranges
// of IOCTL index codes before you choose a base index number.
//
#define Myusb_IOCTL_INDEX 0x0800
#define IOCTL_Myusb_GET_PIPE_INFO CTL_CODE(FILE_DEVICE_UNKNOWN, \
Myusb_IOCTL_INDEX+0,\
METHOD_BUFFERED, \
FILE_ANY_ACCESS)
#define IOCTL_Myusb_GET_DEVICE_DESCRIPTOR CTL_CODE(FILE_DEVICE_UNKNOWN, \
Myusb_IOCTL_INDEX+1,\
METHOD_BUFFERED, \
FILE_ANY_ACCESS)
#define IOCTL_Myusb_GET_CONFIGURATION_DESCRIPTOR CTL_CODE(FILE_DEVICE_UNKNOWN, \
Myusb_IOCTL_INDEX+2,\
METHOD_BUFFERED, \
FILE_ANY_ACCESS)
#define IOCTL_Myusb_BULK_OR_INTERRUPT_WRITE CTL_CODE(FILE_DEVICE_UNKNOWN, \
Myusb_IOCTL_INDEX+3,\
METHOD_BUFFERED, \
FILE_ANY_ACCESS)
#define IOCTL_Myusb_BULK_OR_INTERRUPT_READ CTL_CODE(FILE_DEVICE_UNKNOWN, \
Myusb_IOCTL_INDEX+4,\
METHOD_BUFFERED, \
FILE_ANY_ACCESS)
#define IOCTL_Myusb_VENDOR_REQUEST CTL_CODE(FILE_DEVICE_UNKNOWN, \
Myusb_IOCTL_INDEX+5,\
METHOD_BUFFERED, \
FILE_ANY_ACCESS)
#define IOCTL_Myusb_GET_CURRENT_CONFIG CTL_CODE(FILE_DEVICE_UNKNOWN, \
Myusb_IOCTL_INDEX+6,\
METHOD_BUFFERED, \
FILE_ANY_ACCESS)
#define IOCTL_Myusb_RESET CTL_CODE(FILE_DEVICE_UNKNOWN, \
Myusb_IOCTL_INDEX+12,\
METHOD_IN_DIRECT, \
FILE_ANY_ACCESS)
#define IOCTL_Myusb_RESETPIPE CTL_CODE(FILE_DEVICE_UNKNOWN, \
Myusb_IOCTL_INDEX+13,\
METHOD_IN_DIRECT, \
FILE_ANY_ACCESS)
#define IOCTL_Myusb_ABORTPIPE CTL_CODE(FILE_DEVICE_UNKNOWN, \
Myusb_IOCTL_INDEX+15,\
METHOD_IN_DIRECT, \
FILE_ANY_ACCESS)
#define IOCTL_Myusb_SETINTERFACE CTL_CODE(FILE_DEVICE_UNKNOWN, \
Myusb_IOCTL_INDEX+16,\
METHOD_BUFFERED, \
FILE_ANY_ACCESS)
#define IOCTL_Myusb_GET_STRING_DESCRIPTOR CTL_CODE(FILE_DEVICE_UNKNOWN, \
Myusb_IOCTL_INDEX+17,\
METHOD_BUFFERED, \
FILE_ANY_ACCESS)
//
// Perform an IN transfer over the specified bulk or interrupt pipe.
//
// lpInBuffer: BULK_TRANSFER_CONTROL stucture specifying the pipe number to read from
// nInBufferSize: sizeof(BULK_TRANSFER_CONTROL)
// lpOutBuffer: Buffer to hold data read from the device.
// nOutputBufferSize: size of lpOutBuffer. This parameter determines
// the size of the USB transfer.
// lpBytesReturned: actual number of bytes read
//
#define IOCTL_Myusb_BULK_READ CTL_CODE(FILE_DEVICE_UNKNOWN, \
Myusb_IOCTL_INDEX+19,\
METHOD_OUT_DIRECT, \
FILE_ANY_ACCESS)
//
// Perform an OUT transfer over the specified bulk or interrupt pipe.
//
// lpInBuffer: BULK_TRANSFER_CONTROL stucture specifying the pipe number to write to
// nInBufferSize: sizeof(BULK_TRANSFER_CONTROL)
// lpOutBuffer: Buffer of data to write to the device
// nOutputBufferSize: size of lpOutBuffer. This parameter determines
// the size of the USB transfer.
// lpBytesReturned: actual number of bytes written
//
#define IOCTL_Myusb_BULK_WRITE CTL_CODE(FILE_DEVICE_UNKNOWN, \
Myusb_IOCTL_INDEX+20,\
METHOD_IN_DIRECT, \
FILE_ANY_ACCESS)
//
// The following IOCTL's are defined as using METHOD_DIRECT_IN buffering.
// This means that the output buffer is directly mapped into system
// space and probed for read access by the driver. This means that it is
// brought into memory if it happens to be paged out to disk. Even though
// the buffer is only probed for read access, it is safe (probably) to
// write to it as well. This read/write capability is used for the loopback
// IOCTL's
//
// TODO Insert Loopback IOCTL's
//
// Retrieve the current USB frame number from the Host Controller
//
// lpInBuffer: NULL
// nInBufferSize: 0
// lpOutBuffer: PULONG to hold current frame number
// nOutputBufferSize: sizeof(PULONG)
//
#define IOCTL_Myusb_GET_CURRENT_FRAME_NUMBER CTL_CODE(FILE_DEVICE_UNKNOWN, \
Myusb_IOCTL_INDEX+21,\
METHOD_BUFFERED, \
FILE_ANY_ACCESS)
//
// Performs a vendor or class specific control transfer to EP0. The contents of
// the input parameter determine the type of request. See the USB spec
// for more information on class and vendor control transfers.
//
// lpInBuffer: PVENDOR_OR_CLASS_REQUEST_CONTROL
// nInBufferSize: sizeof(VENDOR_OR_CLASS_REQUEST_CONTROL)
// lpOutBuffer: pointer to a buffer if the request involves a data transfer
// nOutputBufferSize: size of the transfer buffer (corresponds to the wLength
// field of the USB setup packet)
//
#define IOCTL_Myusb_VENDOR_OR_CLASS_REQUEST CTL_CODE(FILE_DEVICE_UNKNOWN, \
Myusb_IOCTL_INDEX+22,\
METHOD_IN_DIRECT, \
FILE_ANY_ACCESS)
//
// Retrieves the actual USBD_STATUS code for the most recently failed
// URB.
//
// lpInBuffer: NULL
// nInBufferSize: 0
// lpOutBuffer: PULONG to hold the URB status
// nOutputBufferSize: sizeof(ULONG)
//
#define IOCTL_Myusb_GET_LAST_ERROR CTL_CODE(FILE_DEVICE_UNKNOWN, \
Myusb_IOCTL_INDEX+23,\
METHOD_BUFFERED, \
FILE_ANY_ACCESS)
//
// Reads from the specified ISO endpoint. (USB IN Transfer)
//
// lpInBuffer: ISO_TRANSFER_CONTROL
// nInBufferSize: sizeof(ISO_TRANSFER_CONTROL)
// lpOutBuffer: buffer to hold data read from the device
// nOutputBufferSize: size of the read buffer.
//
//
//
#define IOCTL_Myusb_ISO_READ CTL_CODE(FILE_DEVICE_UNKNOWN, \
Myusb_IOCTL_INDEX+25,\
METHOD_OUT_DIRECT, \
FILE_ANY_ACCESS)
//
// Writes to the specified ISO endpoint. (USB OUT Transfer)
//
// lpInBuffer: ISO_TRANSFER_CONTROL
// nInBufferSize: sizeof(ISO_TRANSFER_CONTROL)
// lpOutBuffer: buffer to hold data to write to the device
// nOutputBufferSize: size of the write buffer.
//
//
//
#define IOCTL_Myusb_ISO_WRITE CTL_CODE(FILE_DEVICE_UNKNOWN, \
Myusb_IOCTL_INDEX+26,\
METHOD_IN_DIRECT, \
FILE_ANY_ACCESS)
//
// Returns driver version information
//
// lpInBuffer: NULL
// nInBufferSize: 0
// lpOutBuffer: PMyusb_DRIVER_VERSION
// nOutputBufferSize: sizeof(Myusb_DRIVER_VERSION)
//
#define IOCTL_Myusb_GET_DRIVER_VERSION CTL_CODE(FILE_DEVICE_UNKNOWN, \
Myusb_IOCTL_INDEX+29,\
METHOD_BUFFERED, \
FILE_ANY_ACCESS)
#define IOCTL_Myusb_START_ISO_STREAM CTL_CODE(FILE_DEVICE_UNKNOWN, \
Myusb_IOCTL_INDEX+30,\
METHOD_BUFFERED, \
FILE_ANY_ACCESS)
#define IOCTL_Myusb_STOP_ISO_STREAM CTL_CODE(FILE_DEVICE_UNKNOWN, \
Myusb_IOCTL_INDEX+31,\
METHOD_BUFFERED, \
FILE_ANY_ACCESS)
#define IOCTL_Myusb_READ_ISO_BUFFER CTL_CODE(FILE_DEVICE_UNKNOWN, \
Myusb_IOCTL_INDEX+32,\
METHOD_OUT_DIRECT, \
FILE_ANY_ACCESS)
#define IOCTL_CTRL_TRANS CTL_CODE(FILE_DEVICE_UNKNOWN, \
Myusb_IOCTL_INDEX+33,\
METHOD_IN_DIRECT, \
FILE_ANY_ACCESS)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -