#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.