www.pudn.com > usbfilter.rar > 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