#include <iofilter.h>
Inherits BazisLib::DDK::Filter.
Inherited by BazisLib::DDK::StorageFilter.
Public Member Functions | |
IODeviceFilter (LPCWSTR pwszBaseDeviceName, bool bDeleteThisAfterRemoveRequest=false, LPCWSTR pwszFilterDeviceName=NULL, DEVICE_TYPE FilterDeviceType=FILE_DEVICE_UNKNOWN, ULONG DeviceCharacteristics=FILE_DEVICE_SECURE_OPEN, bool bExclusive=FALSE, ULONG AdditionalDeviceFlags=DO_POWER_PAGABLE) | |
~IODeviceFilter () | |
Protected Member Functions | |
virtual NTSTATUS | DispatchRoutine (IN IncomingIrp *Irp, IO_STACK_LOCATION *IrpSp) override |
virtual NTSTATUS | FilterCreate (IncomingIrp *pIrp, PIO_SECURITY_CONTEXT SecurityContext, ULONG Options, USHORT FileAttributes, USHORT ShareAccess, PFILE_OBJECT pFileObj) |
virtual NTSTATUS | FilterClose (IncomingIrp *pIrp) |
virtual NTSTATUS | FilterRead (IncomingIrp *pIrp, void *pBuffer, ULONG Length, ULONG Key, ULONGLONG ByteOffset, PULONG pBytesDone) |
virtual NTSTATUS | FilterRead (IncomingIrp *pIrp, PMDL pMdl, ULONG Length, ULONG Key, ULONGLONG ByteOffset, PULONG pBytesDone) |
virtual NTSTATUS | FilterWrite (IncomingIrp *pIrp, const void *pBuffer, ULONG Length, ULONG Key, ULONGLONG ByteOffset, PULONG pBytesDone) |
virtual NTSTATUS | FilterWrite (IncomingIrp *pIrp, PMDL pMdl, ULONG Length, ULONG Key, ULONGLONG ByteOffset, PULONG pBytesDone) |
virtual NTSTATUS | FilterDeviceControl (IncomingIrp *pIrp, ULONG ControlCode, bool IsInternal, void *pInOutBuffer, ULONG InputLength, ULONG OutputLength, PULONG pBytesDone) |
virtual NTSTATUS | FilterDeviceControl (IncomingIrp *pIrp, ULONG ControlCode, bool IsInternal, void *pInBuffer, PMDL InOutBuffer, ULONG InputLength, ULONG OutputLength, PULONG pBytesDone) |
virtual NTSTATUS | FilterDeviceControl (IncomingIrp *pIrp, ULONG ControlCode, bool IsInternal, void *pUserInputBuffer, void *pUserOutputBuffer, ULONG InputLength, ULONG OutputLength, PULONG pBytesDone) |
BazisLib::DDK::IODeviceFilter::IODeviceFilter | ( | LPCWSTR | pwszBaseDeviceName, | |
bool | bDeleteThisAfterRemoveRequest = false , |
|||
LPCWSTR | pwszFilterDeviceName = NULL , |
|||
DEVICE_TYPE | FilterDeviceType = FILE_DEVICE_UNKNOWN , |
|||
ULONG | DeviceCharacteristics = FILE_DEVICE_SECURE_OPEN , |
|||
bool | bExclusive = FALSE , |
|||
ULONG | AdditionalDeviceFlags = DO_POWER_PAGABLE | |||
) |
BazisLib::DDK::IODeviceFilter::~IODeviceFilter | ( | ) |
virtual NTSTATUS BazisLib::DDK::IODeviceFilter::DispatchRoutine | ( | IN IncomingIrp * | Irp, | |
IO_STACK_LOCATION * | IrpSp | |||
) | [override, protected, virtual] |
IRP handler for Plug-and-play device. Handles IRP_MJ_PNP requests by calling DispatchPNP().
Reimplemented from BazisLib::DDK::PNPDevice.
virtual NTSTATUS BazisLib::DDK::IODeviceFilter::FilterClose | ( | IncomingIrp * | pIrp | ) | [inline, protected, virtual] |
virtual NTSTATUS BazisLib::DDK::IODeviceFilter::FilterCreate | ( | IncomingIrp * | pIrp, | |
PIO_SECURITY_CONTEXT | SecurityContext, | |||
ULONG | Options, | |||
USHORT | FileAttributes, | |||
USHORT | ShareAccess, | |||
PFILE_OBJECT | pFileObj | |||
) | [inline, protected, virtual] |
virtual NTSTATUS BazisLib::DDK::IODeviceFilter::FilterDeviceControl | ( | IncomingIrp * | pIrp, | |
ULONG | ControlCode, | |||
bool | IsInternal, | |||
void * | pUserInputBuffer, | |||
void * | pUserOutputBuffer, | |||
ULONG | InputLength, | |||
ULONG | OutputLength, | |||
PULONG | pBytesDone | |||
) | [inline, protected, virtual] |
This method is called when the driver receives an IRP_MJ_DEVICE_CONTROL or IRP_MJ_INTERNAL_DEVICE_CONTROL packet with Transfer Type bits set to METHOD_NEITHER
pUserInputBuffer | Contains the address of the input buffer in USER SPACE! | |
pUserOutputBuffer | Contains the address of the output buffer in USER SPACE! |
virtual NTSTATUS BazisLib::DDK::IODeviceFilter::FilterDeviceControl | ( | IncomingIrp * | pIrp, | |
ULONG | ControlCode, | |||
bool | IsInternal, | |||
void * | pInBuffer, | |||
PMDL | InOutBuffer, | |||
ULONG | InputLength, | |||
ULONG | OutputLength, | |||
PULONG | pBytesDone | |||
) | [inline, protected, virtual] |
This method is called when the driver receives an IRP_MJ_DEVICE_CONTROL or IRP_MJ_INTERNAL_DEVICE_CONTROL packet with Transfer Type bits set to METHOD_IN_DIRECT or METHOD_OUT_DIRECT
pInBuffer | Contains the address of the system buffer shadowing the input buffer. | |
InOutBuffer | Contains the MDL for the output buffer that can be used for input of output operation depending on the Transfer Type bits in the IOCTL code. |
virtual NTSTATUS BazisLib::DDK::IODeviceFilter::FilterDeviceControl | ( | IncomingIrp * | pIrp, | |
ULONG | ControlCode, | |||
bool | IsInternal, | |||
void * | pInOutBuffer, | |||
ULONG | InputLength, | |||
ULONG | OutputLength, | |||
PULONG | pBytesDone | |||
) | [inline, protected, virtual] |
This method is called when the driver receives an IRP_MJ_DEVICE_CONTROL or IRP_MJ_INTERNAL_DEVICE_CONTROL packet with Transfer Type bits set to METHOD_BUFFERED
Reimplemented in BazisLib::DDK::StorageFilter.
virtual NTSTATUS BazisLib::DDK::IODeviceFilter::FilterRead | ( | IncomingIrp * | pIrp, | |
PMDL | pMdl, | |||
ULONG | Length, | |||
ULONG | Key, | |||
ULONGLONG | ByteOffset, | |||
PULONG | pBytesDone | |||
) | [inline, protected, virtual] |
This method is called when the driver receives an IRP_MJ_READ packet. And the DO_DIRECT_IO flag is set in the DEVICE_OBJECT::Flags field.
virtual NTSTATUS BazisLib::DDK::IODeviceFilter::FilterRead | ( | IncomingIrp * | pIrp, | |
void * | pBuffer, | |||
ULONG | Length, | |||
ULONG | Key, | |||
ULONGLONG | ByteOffset, | |||
PULONG | pBytesDone | |||
) | [inline, protected, virtual] |
This method is called when the driver receives an IRP_MJ_READ packet. And the DO_BUFFERED_IO flag is set in the DEVICE_OBJECT::Flags field.
virtual NTSTATUS BazisLib::DDK::IODeviceFilter::FilterWrite | ( | IncomingIrp * | pIrp, | |
PMDL | pMdl, | |||
ULONG | Length, | |||
ULONG | Key, | |||
ULONGLONG | ByteOffset, | |||
PULONG | pBytesDone | |||
) | [inline, protected, virtual] |
This method is called when the driver receives an IRP_MJ_WRITE packet. And the DO_DIRECT_IO flag is set in the DEVICE_OBJECT::Flags field.
virtual NTSTATUS BazisLib::DDK::IODeviceFilter::FilterWrite | ( | IncomingIrp * | pIrp, | |
const void * | pBuffer, | |||
ULONG | Length, | |||
ULONG | Key, | |||
ULONGLONG | ByteOffset, | |||
PULONG | pBytesDone | |||
) | [inline, protected, virtual] |
This method is called when the driver receives an IRP_MJ_WRITE packet. And the DO_BUFFERED_IO flag is set in the DEVICE_OBJECT::Flags field.