📄 usbfilter.h
字号:
#ifndef _H_HEAD_USBFILTER
#define _H_HEAD_USBFILTER
#include "wdm.h"
#include "scsi.h"
#define POOL_TAG 'liFT'
#define DISK_TAG_SRB 'SDcS' // "ScDS" - srb allocation
#define IOCTL_800_READ \
CTL_CODE(FILE_DEVICE_DISK, 0x801, METHOD_BUFFERED, FILE_READ_DATA)
#define IOCTL_800_WRITE \
CTL_CODE(FILE_DEVICE_DISK, 0x800, METHOD_BUFFERED, FILE_ANY_ACCESS)
typedef enum _DEVICE_PNP_STATE{
NotStarted = 0,
Started,
StopPending,
Stopped,
RemovePending,
SurpriseRemovePending,
Deleted
} DEVICE_PNP_STATE;
#define INITIALIZE_PNP_STATE(_Data_) \
(_Data_)->DevicePnPState = NotStarted;\
(_Data_)->PreviousPnPState = NotStarted;
#define SET_NEW_PNP_STATE(_Data_, _state_) \
(_Data_)->PreviousPnPState = (_Data_)->DevicePnPState;\
(_Data_)->DevicePnPState = (_state_);
#define RESTORE_PREVIOUS_PNP_STATE(_Data_) \
(_Data_)->DevicePnPState = (_Data_)->PreviousPnPState;\
typedef struct _DEVICE_EXTENSION
{
PDEVICE_OBJECT CurrentDeviceObject;
ULONG DeviceType;
IO_REMOVE_LOCK RemoveLock;
DEVICE_PNP_STATE PreviousPnPState;
DEVICE_PNP_STATE DevicePnPState;
PDEVICE_OBJECT NextLowerDriver;
}USB_DEVICE_EXTENSION,*PUSB_DEVICE_EXTENSION;
NTSTATUS
USBFilter(PDEVICE_OBJECT DeviceObject,
PIRP Irp);
NTSTATUS
USBFilterSCSI(PDEVICE_OBJECT DeviceObject,
PIRP Irp);
NTSTATUS
USBFilterPnp(PDEVICE_OBJECT DeviceObject,
PIRP Irp);
NTSTATUS
USBFilterAddDevice(PDRIVER_OBJECT DriverObject,
PDEVICE_OBJECT PhysicalDevice);
VOID
USBFilterUnload(PDRIVER_OBJECT DriverObject);
NTSTATUS
USBFilter(PDEVICE_OBJECT DeviceObject,
PIRP Irp);
NTSTATUS
USBFilterStartCompletionRoutine(
IN PDEVICE_OBJECT DeviceObject,
IN PIRP Irp, IN PVOID Context
);
NTSTATUS
FilterDeviceUsageNotificationCompletionRoutine(
IN PDEVICE_OBJECT DeviceObject,
IN PIRP Irp,
IN PVOID Context
);
NTSTATUS
USBSCSICompletion( IN PDEVICE_OBJECT DeviceObject,
IN PIRP Irp,
IN PVOID Context );
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -