BazisLib::DDK::IODeviceFilter Class Reference

#include <iofilter.h>

Inherits BazisLib::DDK::Filter.

Inherited by BazisLib::DDK::StorageFilter.

Collaboration diagram for BazisLib::DDK::IODeviceFilter:

Collaboration graph
[legend]

List of all members.

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)


Constructor & Destructor Documentation

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 (  ) 


Member Function Documentation

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

Parameters:
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

Parameters:
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.


The documentation for this class was generated from the following file:
SourceForge.net Logo