#include <ntoskrnl.h>
#include <debug.h>
Go to the source code of this file.
|
VOID NTAPI | FsRtlPTeardownPerFileObjectContexts (IN PFILE_OBJECT FileObject) |
|
LOGICAL NTAPI | FsRtlIsPagingFile (IN PFILE_OBJECT FileObject) |
|
PFSRTL_PER_FILEOBJECT_CONTEXT NTAPI | FsRtlLookupPerFileObjectContext (IN PFILE_OBJECT FileObject, IN PVOID OwnerId OPTIONAL, IN PVOID InstanceId OPTIONAL) |
|
PFSRTL_PER_STREAM_CONTEXT NTAPI | FsRtlLookupPerStreamContextInternal (IN PFSRTL_ADVANCED_FCB_HEADER AdvFcbHeader, IN PVOID OwnerId OPTIONAL, IN PVOID InstanceId OPTIONAL) |
|
NTSTATUS NTAPI | FsRtlInsertPerFileObjectContext (IN PFILE_OBJECT FileObject, IN PFSRTL_PER_FILEOBJECT_CONTEXT Ptr) |
|
NTSTATUS NTAPI | FsRtlInsertPerStreamContext (IN PFSRTL_ADVANCED_FCB_HEADER AdvFcbHeader, IN PFSRTL_PER_STREAM_CONTEXT PerStreamContext) |
|
PFSRTL_PER_FILEOBJECT_CONTEXT NTAPI | FsRtlRemovePerFileObjectContext (IN PFILE_OBJECT FileObject, IN PVOID OwnerId OPTIONAL, IN PVOID InstanceId OPTIONAL) |
|
PFSRTL_PER_STREAM_CONTEXT NTAPI | FsRtlRemovePerStreamContext (IN PFSRTL_ADVANCED_FCB_HEADER AdvFcbHeader, IN PVOID OwnerId OPTIONAL, IN PVOID InstanceId OPTIONAL) |
|
VOID NTAPI | FsRtlTeardownPerStreamContexts (IN PFSRTL_ADVANCED_FCB_HEADER AdvFcbHeader) |
|
◆ NDEBUG
◆ FILE_OBJECT_FILTER_CONTEXTS
◆ PFILE_OBJECT_FILTER_CONTEXTS
◆ FsRtlInsertPerFileObjectContext()
Definition at line 175 of file filtrctx.c.
LIST_ENTRY FilterContexts
#define STATUS_INSUFFICIENT_RESOURCES
#define STATUS_INVALID_PARAMETER
FORCEINLINE VOID InsertHeadList(_Inout_ PLIST_ENTRY ListHead, _Inout_ __drv_aliasesMem PLIST_ENTRY Entry)
_Must_inspect_result_ _In_ PFSRTL_PER_STREAM_CONTEXT Ptr
#define STATUS_INVALID_DEVICE_REQUEST
VOID FASTCALL ExReleaseFastMutex(IN PFAST_MUTEX FastMutex)
FAST_MUTEX FilterContextsMutex
_In_ WDFREQUEST _In_ WDFFILEOBJECT FileObject
FORCEINLINE VOID ExInitializeFastMutex(_Out_ PFAST_MUTEX FastMutex)
PVOID NTAPI IoGetFileObjectFilterContext(IN PFILE_OBJECT FileObject)
#define STATUS_UNSUCCESSFUL
#define ExAllocatePoolWithTag(hernya, size, tag)
#define FO_FILE_OBJECT_HAS_EXTENSION
VOID FASTCALL ExAcquireFastMutex(IN PFAST_MUTEX FastMutex)
#define InitializeListHead(ListHead)
NTSTATUS NTAPI IoChangeFileObjectFilterContext(IN PFILE_OBJECT FileObject, IN PVOID FilterContext, IN BOOLEAN Define)
#define ExFreePoolWithTag(_P, _T)
◆ FsRtlInsertPerStreamContext()
Definition at line 235 of file filtrctx.c.
244 InsertHeadList(&(AdvFcbHeader->FilterContexts), &(PerStreamContext->Links));
FORCEINLINE VOID InsertHeadList(_Inout_ PLIST_ENTRY ListHead, _Inout_ __drv_aliasesMem PLIST_ENTRY Entry)
#define STATUS_INVALID_DEVICE_REQUEST
VOID FASTCALL ExReleaseFastMutex(IN PFAST_MUTEX FastMutex)
#define FSRTL_FLAG2_SUPPORTS_FILTER_CONTEXTS
VOID FASTCALL ExAcquireFastMutex(IN PFAST_MUTEX FastMutex)
◆ FsRtlIsPagingFile()
Definition at line 64 of file filtrctx.c.
_In_ WDFREQUEST _In_ WDFFILEOBJECT FileObject
BOOLEAN NTAPI MmIsFileObjectAPagingFile(PFILE_OBJECT FileObject)
◆ FsRtlLookupPerFileObjectContext()
Definition at line 74 of file filtrctx.c.
94 NextEntry = NextEntry->
Flink)
109 PerFOContext = TmpPerFOContext;
LIST_ENTRY FilterContexts
_Must_inspect_result_ FORCEINLINE BOOLEAN IsListEmpty(_In_ const LIST_ENTRY *ListHead)
VOID FASTCALL ExReleaseFastMutex(IN PFAST_MUTEX FastMutex)
FAST_MUTEX FilterContextsMutex
_Must_inspect_result_ _In_opt_ PVOID _In_opt_ PVOID InstanceId
PFLT_MESSAGE_WAITER_QUEUE CONTAINING_RECORD(Csq, DEVICE_EXTENSION, IrpQueue)) -> WaiterQ.mLock) _IRQL_raises_(DISPATCH_LEVEL) VOID NTAPI FltpAcquireMessageWaiterLock(_In_ PIO_CSQ Csq, _Out_ PKIRQL Irql)
_In_ WDFREQUEST _In_ WDFFILEOBJECT FileObject
struct _LIST_ENTRY * Flink
PVOID NTAPI IoGetFileObjectFilterContext(IN PFILE_OBJECT FileObject)
struct _FSRTL_PER_FILEOBJECT_CONTEXT * PFSRTL_PER_FILEOBJECT_CONTEXT
VOID FASTCALL ExAcquireFastMutex(IN PFAST_MUTEX FastMutex)
_Must_inspect_result_ _In_opt_ PVOID OwnerId
◆ FsRtlLookupPerStreamContextInternal()
Definition at line 126 of file filtrctx.c.
141 for (NextEntry = AdvFcbHeader->FilterContexts.Flink;
142 NextEntry != &(AdvFcbHeader->FilterContexts);
143 NextEntry = NextEntry->
Flink)
158 PerStreamContext = TmpPerStreamContext;
167 return PerStreamContext;
_Must_inspect_result_ FORCEINLINE BOOLEAN IsListEmpty(_In_ const LIST_ENTRY *ListHead)
VOID FASTCALL ExReleaseFastMutex(IN PFAST_MUTEX FastMutex)
_Must_inspect_result_ _In_opt_ PVOID _In_opt_ PVOID InstanceId
PFLT_MESSAGE_WAITER_QUEUE CONTAINING_RECORD(Csq, DEVICE_EXTENSION, IrpQueue)) -> WaiterQ.mLock) _IRQL_raises_(DISPATCH_LEVEL) VOID NTAPI FltpAcquireMessageWaiterLock(_In_ PIO_CSQ Csq, _Out_ PKIRQL Irql)
struct _LIST_ENTRY * Flink
#define FSRTL_FLAG2_SUPPORTS_FILTER_CONTEXTS
VOID FASTCALL ExAcquireFastMutex(IN PFAST_MUTEX FastMutex)
struct _FSRTL_PER_STREAM_CONTEXT * PFSRTL_PER_STREAM_CONTEXT
_Must_inspect_result_ _In_opt_ PVOID OwnerId
◆ FsRtlPTeardownPerFileObjectContexts()
Definition at line 28 of file filtrctx.c.
LIST_ENTRY FilterContexts
_Must_inspect_result_ FORCEINLINE BOOLEAN IsListEmpty(_In_ const LIST_ENTRY *ListHead)
_In_ WDFREQUEST _In_ WDFFILEOBJECT FileObject
PVOID NTAPI IoGetFileObjectFilterContext(IN PFILE_OBJECT FileObject)
NTSTATUS NTAPI IoChangeFileObjectFilterContext(IN PFILE_OBJECT FileObject, IN PVOID FilterContext, IN BOOLEAN Define)
#define ExFreePoolWithTag(_P, _T)
Referenced by IopDeleteFile().
◆ FsRtlRemovePerFileObjectContext()
Definition at line 254 of file filtrctx.c.
274 NextEntry = NextEntry->
Flink)
289 PerFOContext = TmpPerFOContext;
LIST_ENTRY FilterContexts
_Must_inspect_result_ FORCEINLINE BOOLEAN IsListEmpty(_In_ const LIST_ENTRY *ListHead)
VOID FASTCALL ExReleaseFastMutex(IN PFAST_MUTEX FastMutex)
FAST_MUTEX FilterContextsMutex
FORCEINLINE BOOLEAN RemoveEntryList(_In_ PLIST_ENTRY Entry)
_Must_inspect_result_ _In_opt_ PVOID _In_opt_ PVOID InstanceId
PFLT_MESSAGE_WAITER_QUEUE CONTAINING_RECORD(Csq, DEVICE_EXTENSION, IrpQueue)) -> WaiterQ.mLock) _IRQL_raises_(DISPATCH_LEVEL) VOID NTAPI FltpAcquireMessageWaiterLock(_In_ PIO_CSQ Csq, _Out_ PKIRQL Irql)
_In_ WDFREQUEST _In_ WDFFILEOBJECT FileObject
struct _LIST_ENTRY * Flink
PVOID NTAPI IoGetFileObjectFilterContext(IN PFILE_OBJECT FileObject)
struct _FSRTL_PER_FILEOBJECT_CONTEXT * PFSRTL_PER_FILEOBJECT_CONTEXT
VOID FASTCALL ExAcquireFastMutex(IN PFAST_MUTEX FastMutex)
_Must_inspect_result_ _In_opt_ PVOID OwnerId
◆ FsRtlRemovePerStreamContext()
Definition at line 312 of file filtrctx.c.
328 for (NextEntry = AdvFcbHeader->FilterContexts.Flink;
329 NextEntry != &(AdvFcbHeader->FilterContexts);
330 NextEntry = NextEntry->
Flink)
345 PerStreamContext = TmpPerStreamContext;
352 if (PerStreamContext)
359 return PerStreamContext;
_Must_inspect_result_ FORCEINLINE BOOLEAN IsListEmpty(_In_ const LIST_ENTRY *ListHead)
VOID FASTCALL ExReleaseFastMutex(IN PFAST_MUTEX FastMutex)
FORCEINLINE BOOLEAN RemoveEntryList(_In_ PLIST_ENTRY Entry)
_Must_inspect_result_ _In_opt_ PVOID _In_opt_ PVOID InstanceId
PFLT_MESSAGE_WAITER_QUEUE CONTAINING_RECORD(Csq, DEVICE_EXTENSION, IrpQueue)) -> WaiterQ.mLock) _IRQL_raises_(DISPATCH_LEVEL) VOID NTAPI FltpAcquireMessageWaiterLock(_In_ PIO_CSQ Csq, _Out_ PKIRQL Irql)
struct _LIST_ENTRY * Flink
#define FSRTL_FLAG2_SUPPORTS_FILTER_CONTEXTS
VOID FASTCALL ExAcquireFastMutex(IN PFAST_MUTEX FastMutex)
struct _FSRTL_PER_STREAM_CONTEXT * PFSRTL_PER_STREAM_CONTEXT
_Must_inspect_result_ _In_opt_ PVOID OwnerId
◆ FsRtlTeardownPerStreamContexts()
Definition at line 368 of file filtrctx.c.
378 IsMutexLocked =
TRUE;
381 while (!
IsListEmpty(&(AdvFcbHeader->FilterContexts)))
389 IsMutexLocked =
FALSE;
397 IsMutexLocked =
TRUE;
_Must_inspect_result_ FORCEINLINE BOOLEAN IsListEmpty(_In_ const LIST_ENTRY *ListHead)
VOID FASTCALL ExReleaseFastMutex(IN PFAST_MUTEX FastMutex)
PFREE_FUNCTION FreeCallback
FORCEINLINE PLIST_ENTRY RemoveHeadList(_Inout_ PLIST_ENTRY ListHead)
PFLT_MESSAGE_WAITER_QUEUE CONTAINING_RECORD(Csq, DEVICE_EXTENSION, IrpQueue)) -> WaiterQ.mLock) _IRQL_raises_(DISPATCH_LEVEL) VOID NTAPI FltpAcquireMessageWaiterLock(_In_ PIO_CSQ Csq, _Out_ PKIRQL Irql)
VOID FASTCALL ExAcquireFastMutex(IN PFAST_MUTEX FastMutex)
Referenced by CdDeleteFcb(), Ext2FreeFcb(), FatDeleteFcb(), FatTearDownVcb(), and RxFreeFcbObject().