WDK Mini Filter Example
CdoProc.h File Reference

Go to the source code of this file.

Functions

 _Function_class_ (DRIVER_INITIALIZE) NTSTATUS CdoCreateControlDeviceObject(_Inout_ PDRIVER_OBJECT DriverObject)
 
VOID CdoDeleteControlDeviceObject (VOID)
 
NTSTATUS CdoMajorFunction (_In_ PDEVICE_OBJECT DeviceObject, _Inout_ PIRP Irp)
 
NTSTATUS CdoHandlePrivateOpen (_In_ PIRP Irp)
 
NTSTATUS CdoHandlePrivateCleanup (_In_ PIRP Irp)
 
NTSTATUS CdoHandlePrivateClose (_In_ PIRP Irp)
 
NTSTATUS CdoHandlePrivateFsControl (_In_ PDEVICE_OBJECT DeviceObject, _In_ ULONG IoControlCode, _In_reads_bytes_opt_(InputBufferLength) PVOID InputBuffer, _In_ ULONG InputBufferLength, _Out_writes_bytes_opt_(OutputBufferLength) PVOID OutputBuffer, _In_ ULONG OutputBufferLength, _Out_ PIO_STATUS_BLOCK IoStatus, _In_opt_ PIRP Irp)
 
BOOLEAN CdoFastIoCheckIfPossible (_In_ PFILE_OBJECT FileObject, _In_ PLARGE_INTEGER FileOffset, _In_ ULONG Length, _In_ BOOLEAN Wait, _In_ ULONG LockKey, _In_ BOOLEAN CheckForReadOperation, _Out_ PIO_STATUS_BLOCK IoStatus, _In_ PDEVICE_OBJECT DeviceObject)
 
BOOLEAN CdoFastIoRead (_In_ PFILE_OBJECT FileObject, _In_ PLARGE_INTEGER FileOffset, _In_ ULONG Length, _In_ BOOLEAN Wait, _In_ ULONG LockKey, _Out_writes_bytes_(Length) PVOID Buffer, _Out_ PIO_STATUS_BLOCK IoStatus, _In_ PDEVICE_OBJECT DeviceObject)
 
BOOLEAN CdoFastIoWrite (_In_ PFILE_OBJECT FileObject, _In_ PLARGE_INTEGER FileOffset, _In_ ULONG Length, _In_ BOOLEAN Wait, _In_ ULONG LockKey, _In_reads_bytes_(Length) PVOID Buffer, _Out_ PIO_STATUS_BLOCK IoStatus, _In_ PDEVICE_OBJECT DeviceObject)
 
 _Success_ (IoStatus->Status==0) BOOLEAN CdoFastIoQueryBasicInfo(_In_ PFILE_OBJECT FileObject
 
BOOLEAN CdoFastIoLock (_In_ PFILE_OBJECT FileObject, _In_ PLARGE_INTEGER FileOffset, _In_ PLARGE_INTEGER Length, _In_ PEPROCESS ProcessId, _In_ ULONG Key, _In_ BOOLEAN FailImmediately, _In_ BOOLEAN ExclusiveLock, _Out_ PIO_STATUS_BLOCK IoStatus, _In_ PDEVICE_OBJECT DeviceObject)
 
BOOLEAN CdoFastIoUnlockSingle (_In_ PFILE_OBJECT FileObject, _In_ PLARGE_INTEGER FileOffset, _In_ PLARGE_INTEGER Length, _In_ PEPROCESS ProcessId, _In_ ULONG Key, _Out_ PIO_STATUS_BLOCK IoStatus, _In_ PDEVICE_OBJECT DeviceObject)
 
BOOLEAN CdoFastIoUnlockAll (_In_ PFILE_OBJECT FileObject, _In_ PEPROCESS ProcessId, _Out_ PIO_STATUS_BLOCK IoStatus, _In_ PDEVICE_OBJECT DeviceObject)
 
BOOLEAN CdoFastIoUnlockAllByKey (_In_ PFILE_OBJECT FileObject, _In_ PVOID ProcessId, _In_ ULONG Key, _Out_ PIO_STATUS_BLOCK IoStatus, _In_ PDEVICE_OBJECT DeviceObject)
 
BOOLEAN CdoFastIoDeviceControl (_In_ PFILE_OBJECT FileObject, _In_ BOOLEAN Wait, _In_reads_bytes_opt_(InputBufferLength) PVOID InputBuffer, _In_ ULONG InputBufferLength, _Out_writes_bytes_opt_(OutputBufferLength) PVOID OutputBuffer, _In_ ULONG OutputBufferLength, _In_ ULONG IoControlCode, _Out_ PIO_STATUS_BLOCK IoStatus, _In_ PDEVICE_OBJECT DeviceObject)
 
BOOLEAN CdoFastIoMdlReadComplete (_In_ PFILE_OBJECT FileObject, _In_ PMDL MdlChain, _In_ PDEVICE_OBJECT DeviceObject)
 
BOOLEAN CdoFastIoMdlWriteComplete (_In_ PFILE_OBJECT FileObject, _In_ PLARGE_INTEGER FileOffset, _In_ PMDL MdlChain, _In_ PDEVICE_OBJECT DeviceObject)
 
_In_ PLARGE_INTEGER _In_ ULONG _In_ ULONG _Out_writes_bytes_ (Length) PVOID Buffer
 
_In_ PLARGE_INTEGER _In_ ULONG _In_ ULONG _Outptr_ PMDL _Out_ PIO_STATUS_BLOCK _Out_writes_bytes_ (CompressedDataInfoLength) struct _COMPRESSED_DATA_INFO *CompressedDataInfo
 
_In_ PLARGE_INTEGER _In_ ULONG _In_ ULONG _In_reads_bytes_ (Length) PVOID Buffer
 
_In_ PLARGE_INTEGER _In_ ULONG _In_ ULONG _Outptr_ PMDL _Out_ PIO_STATUS_BLOCK _In_reads_bytes_ (CompressedDataInfoLength) struct _COMPRESSED_DATA_INFO *CompressedDataInfo
 
BOOLEAN CdoFastIoMdlReadCompleteCompressed (_In_ PFILE_OBJECT FileObject, _In_ PMDL MdlChain, _In_ PDEVICE_OBJECT DeviceObject)
 
BOOLEAN CdoFastIoMdlWriteCompleteCompressed (_In_ PFILE_OBJECT FileObject, _In_ PLARGE_INTEGER FileOffset, _In_ PMDL MdlChain, _In_ PDEVICE_OBJECT DeviceObject)
 
 _Success_ (Irp->IoStatus.Status==0) BOOLEAN CdoFastIoQueryOpen(_In_ PIRP Irp
 
FORCEINLINE VOID _Acquires_lock_ (_Global_critical_region_) CdoAcquireResourceExclusive(_Inout_ _Requires_lock_not_held_(*_Curr_) _Acquires_exclusive_lock_(*_Curr_) PERESOURCE Resource)
 
FORCEINLINE VOID _Releases_lock_ (_Global_critical_region_) _Requires_lock_held_(_Global_critical_region_) CdoReleaseResource(_Inout_ _Requires_lock_held_(*_Curr_) _Releases_lock_(*_Curr_) PERESOURCE Resource)
 

Variables

DRIVER_DISPATCH CdoMajorFunction
 
_In_ BOOLEAN Wait
 
_In_ BOOLEAN _Out_ PFILE_BASIC_INFORMATION Buffer
 
_In_ BOOLEAN _Out_ PFILE_BASIC_INFORMATION _Out_ PIO_STATUS_BLOCK IoStatus
 
_In_ BOOLEAN _Out_ PFILE_BASIC_INFORMATION _Out_ PIO_STATUS_BLOCK _In_ PDEVICE_OBJECT DeviceObject
 
_In_ PLARGE_INTEGER FileOffset
 
_In_ PLARGE_INTEGER _In_ ULONG Length
 
_In_ PLARGE_INTEGER _In_ ULONG _In_ ULONG LockKey
 
_In_ PLARGE_INTEGER _In_ ULONG _In_ ULONG _Outptr_ PMDL * MdlChain
 
_In_ PLARGE_INTEGER _In_ ULONG _In_ ULONG _Outptr_ PMDL _Out_ PIO_STATUS_BLOCK _In_ ULONG CompressedDataInfoLength
 
_Out_ PFILE_NETWORK_OPEN_INFORMATION NetworkInformation
 

Function Documentation

◆ _Acquires_lock_()

FORCEINLINE VOID _Acquires_lock_ ( _Global_critical_region_  )

Definition at line 283 of file CdoProc.h.

◆ _Function_class_()

_Function_class_ ( DRIVER_INITIALIZE  )

Definition at line 104 of file CdoOperations.c.

◆ _In_reads_bytes_() [1/2]

_In_ PLARGE_INTEGER _In_ ULONG _In_ ULONG _In_reads_bytes_ ( Length  )

◆ _In_reads_bytes_() [2/2]

_In_ PLARGE_INTEGER _In_ ULONG _In_ ULONG _Outptr_ PMDL _Out_ PIO_STATUS_BLOCK _In_reads_bytes_ ( CompressedDataInfoLength  )

◆ _Out_writes_bytes_() [1/2]

_In_ PLARGE_INTEGER _In_ ULONG _In_ ULONG _Out_writes_bytes_ ( Length  )

◆ _Out_writes_bytes_() [2/2]

_In_ PLARGE_INTEGER _In_ ULONG _In_ ULONG _Outptr_ PMDL _Out_ PIO_STATUS_BLOCK _Out_writes_bytes_ ( CompressedDataInfoLength  )

◆ _Releases_lock_()

FORCEINLINE VOID _Releases_lock_ ( _Global_critical_region_  )

Definition at line 313 of file CdoProc.h.

◆ _Success_() [1/2]

_Success_ ( IoStatus->  Status = = 0)

◆ _Success_() [2/2]

_Success_ ( Irp->IoStatus.  Status = = 0)

◆ CdoDeleteControlDeviceObject()

VOID CdoDeleteControlDeviceObject ( VOID  )

Definition at line 178 of file CdoOperations.c.

◆ CdoFastIoCheckIfPossible()

BOOLEAN CdoFastIoCheckIfPossible ( _In_ PFILE_OBJECT  FileObject,
_In_ PLARGE_INTEGER  FileOffset,
_In_ ULONG  Length,
_In_ BOOLEAN  Wait,
_In_ ULONG  LockKey,
_In_ BOOLEAN  CheckForReadOperation,
_Out_ PIO_STATUS_BLOCK  IoStatus,
_In_ PDEVICE_OBJECT  DeviceObject 
)

Definition at line 808 of file CdoOperations.c.

◆ CdoFastIoDeviceControl()

BOOLEAN CdoFastIoDeviceControl ( _In_ PFILE_OBJECT  FileObject,
_In_ BOOLEAN  Wait,
_In_reads_bytes_opt_(InputBufferLength) PVOID  InputBuffer,
_In_ ULONG  InputBufferLength,
_Out_writes_bytes_opt_(OutputBufferLength) PVOID  OutputBuffer,
_In_ ULONG  OutputBufferLength,
_In_ ULONG  IoControlCode,
_Out_ PIO_STATUS_BLOCK  IoStatus,
_In_ PDEVICE_OBJECT  DeviceObject 
)

Definition at line 1445 of file CdoOperations.c.

◆ CdoFastIoLock()

BOOLEAN CdoFastIoLock ( _In_ PFILE_OBJECT  FileObject,
_In_ PLARGE_INTEGER  FileOffset,
_In_ PLARGE_INTEGER  Length,
_In_ PEPROCESS  ProcessId,
_In_ ULONG  Key,
_In_ BOOLEAN  FailImmediately,
_In_ BOOLEAN  ExclusiveLock,
_Out_ PIO_STATUS_BLOCK  IoStatus,
_In_ PDEVICE_OBJECT  DeviceObject 
)

Definition at line 1171 of file CdoOperations.c.

◆ CdoFastIoMdlReadComplete()

BOOLEAN CdoFastIoMdlReadComplete ( _In_ PFILE_OBJECT  FileObject,
_In_ PMDL  MdlChain,
_In_ PDEVICE_OBJECT  DeviceObject 
)

Definition at line 1675 of file CdoOperations.c.

◆ CdoFastIoMdlReadCompleteCompressed()

BOOLEAN CdoFastIoMdlReadCompleteCompressed ( _In_ PFILE_OBJECT  FileObject,
_In_ PMDL  MdlChain,
_In_ PDEVICE_OBJECT  DeviceObject 
)

Definition at line 2057 of file CdoOperations.c.

◆ CdoFastIoMdlWriteComplete()

BOOLEAN CdoFastIoMdlWriteComplete ( _In_ PFILE_OBJECT  FileObject,
_In_ PLARGE_INTEGER  FileOffset,
_In_ PMDL  MdlChain,
_In_ PDEVICE_OBJECT  DeviceObject 
)

Definition at line 1805 of file CdoOperations.c.

◆ CdoFastIoMdlWriteCompleteCompressed()

BOOLEAN CdoFastIoMdlWriteCompleteCompressed ( _In_ PFILE_OBJECT  FileObject,
_In_ PLARGE_INTEGER  FileOffset,
_In_ PMDL  MdlChain,
_In_ PDEVICE_OBJECT  DeviceObject 
)

Definition at line 2112 of file CdoOperations.c.

◆ CdoFastIoRead()

BOOLEAN CdoFastIoRead ( _In_ PFILE_OBJECT  FileObject,
_In_ PLARGE_INTEGER  FileOffset,
_In_ ULONG  Length,
_In_ BOOLEAN  Wait,
_In_ ULONG  LockKey,
_Out_writes_bytes_(Length) PVOID  Buffer,
_Out_ PIO_STATUS_BLOCK  IoStatus,
_In_ PDEVICE_OBJECT  DeviceObject 
)

Definition at line 884 of file CdoOperations.c.

◆ CdoFastIoUnlockAll()

BOOLEAN CdoFastIoUnlockAll ( _In_ PFILE_OBJECT  FileObject,
_In_ PEPROCESS  ProcessId,
_Out_ PIO_STATUS_BLOCK  IoStatus,
_In_ PDEVICE_OBJECT  DeviceObject 
)

Definition at line 1324 of file CdoOperations.c.

◆ CdoFastIoUnlockAllByKey()

BOOLEAN CdoFastIoUnlockAllByKey ( _In_ PFILE_OBJECT  FileObject,
_In_ PVOID  ProcessId,
_In_ ULONG  Key,
_Out_ PIO_STATUS_BLOCK  IoStatus,
_In_ PDEVICE_OBJECT  DeviceObject 
)

Definition at line 1382 of file CdoOperations.c.

◆ CdoFastIoUnlockSingle()

BOOLEAN CdoFastIoUnlockSingle ( _In_ PFILE_OBJECT  FileObject,
_In_ PLARGE_INTEGER  FileOffset,
_In_ PLARGE_INTEGER  Length,
_In_ PEPROCESS  ProcessId,
_In_ ULONG  Key,
_Out_ PIO_STATUS_BLOCK  IoStatus,
_In_ PDEVICE_OBJECT  DeviceObject 
)

Definition at line 1252 of file CdoOperations.c.

◆ CdoFastIoWrite()

BOOLEAN CdoFastIoWrite ( _In_ PFILE_OBJECT  FileObject,
_In_ PLARGE_INTEGER  FileOffset,
_In_ ULONG  Length,
_In_ BOOLEAN  Wait,
_In_ ULONG  LockKey,
_In_reads_bytes_(Length) PVOID  Buffer,
_Out_ PIO_STATUS_BLOCK  IoStatus,
_In_ PDEVICE_OBJECT  DeviceObject 
)

Definition at line 960 of file CdoOperations.c.

◆ CdoHandlePrivateCleanup()

NTSTATUS CdoHandlePrivateCleanup ( _In_ PIRP  Irp)

Definition at line 509 of file CdoOperations.c.

◆ CdoHandlePrivateClose()

NTSTATUS CdoHandlePrivateClose ( _In_ PIRP  Irp)

Definition at line 584 of file CdoOperations.c.

◆ CdoHandlePrivateFsControl()

NTSTATUS CdoHandlePrivateFsControl ( _In_ PDEVICE_OBJECT  DeviceObject,
_In_ ULONG  IoControlCode,
_In_reads_bytes_opt_(InputBufferLength) PVOID  InputBuffer,
_In_ ULONG  InputBufferLength,
_Out_writes_bytes_opt_(OutputBufferLength) PVOID  OutputBuffer,
_In_ ULONG  OutputBufferLength,
_Out_ PIO_STATUS_BLOCK  IoStatus,
_In_opt_ PIRP  Irp 
)

Definition at line 661 of file CdoOperations.c.

◆ CdoHandlePrivateOpen()

NTSTATUS CdoHandlePrivateOpen ( _In_ PIRP  Irp)

Definition at line 404 of file CdoOperations.c.

◆ CdoMajorFunction()

NTSTATUS CdoMajorFunction ( _In_ PDEVICE_OBJECT  DeviceObject,
_Inout_ PIRP  Irp 
)

Definition at line 216 of file CdoOperations.c.

Variable Documentation

◆ Buffer

_In_ BOOLEAN _Out_ PFILE_NETWORK_OPEN_INFORMATION Buffer

Definition at line 119 of file CdoProc.h.

◆ CdoMajorFunction

DRIVER_DISPATCH CdoMajorFunction

Definition at line 48 of file CdoProc.h.

◆ CompressedDataInfoLength

_In_ PLARGE_INTEGER _In_ ULONG _In_ ULONG _Outptr_ PMDL _Out_ PIO_STATUS_BLOCK _In_ ULONG CompressedDataInfoLength

Definition at line 237 of file CdoProc.h.

◆ DeviceObject

_Out_ PFILE_NETWORK_OPEN_INFORMATION _In_ PDEVICE_OBJECT DeviceObject

Definition at line 119 of file CdoProc.h.

◆ FileOffset

_In_ PLARGE_INTEGER FileOffset

Definition at line 195 of file CdoProc.h.

◆ IoStatus

_In_ PLARGE_INTEGER _In_ ULONG _In_ ULONG _Outptr_ PMDL _Out_ PIO_STATUS_BLOCK IoStatus

Definition at line 119 of file CdoProc.h.

◆ Length

_In_ PLARGE_INTEGER _In_ ULONG Length

Definition at line 195 of file CdoProc.h.

◆ LockKey

_In_ PLARGE_INTEGER _In_ ULONG _In_ ULONG LockKey

Definition at line 195 of file CdoProc.h.

◆ MdlChain

_In_ PLARGE_INTEGER _In_ ULONG _In_ ULONG _Outptr_ PMDL* MdlChain

Definition at line 195 of file CdoProc.h.

◆ NetworkInformation

_Out_ PFILE_NETWORK_OPEN_INFORMATION NetworkInformation

Definition at line 271 of file CdoProc.h.

◆ Wait

_In_ BOOLEAN Wait

Definition at line 119 of file CdoProc.h.

Social Network


Services Overview

Architect, implement and test file system filter drivers for a wide range of functionality. We can offer several levels of assistance to meet your specific.

Contact Us

You are welcome to contact us for salse or partnership.

Sales: sales@easefilter.com
Support: support@easefilter.com
Info: info@easefilter.com