⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 usbfilter.h

📁 这是一个usb过滤驱动。它也是基于wdm模型的
💻 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 + -