94 NextEntry = NextEntry->
Flink)
109 PerFOContext = TmpPerFOContext;
141 for (NextEntry = AdvFcbHeader->FilterContexts.
Flink;
142 NextEntry != &(AdvFcbHeader->FilterContexts);
143 NextEntry = NextEntry->
Flink)
158 PerStreamContext = TmpPerStreamContext;
167 return PerStreamContext;
246 InsertHeadList(&(AdvFcbHeader->FilterContexts), &(PerStreamContext->Links));
276 NextEntry = NextEntry->
Flink)
291 PerFOContext = TmpPerFOContext;
330 for (NextEntry = AdvFcbHeader->FilterContexts.
Flink;
331 NextEntry != &(AdvFcbHeader->FilterContexts);
332 NextEntry = NextEntry->
Flink)
347 PerStreamContext = TmpPerStreamContext;
354 if (PerStreamContext)
361 return PerStreamContext;
380 IsMutexLocked =
TRUE;
383 while (!
IsListEmpty(&(AdvFcbHeader->FilterContexts)))
391 IsMutexLocked =
FALSE;
399 IsMutexLocked =
TRUE;
#define NT_SUCCESS(StatCode)
#define RemoveEntryList(Entry)
#define InsertHeadList(ListHead, Entry)
#define ExAllocatePoolWithTag(hernya, size, tag)
#define IsListEmpty(ListHead)
#define RemoveHeadList(ListHead)
#define InitializeListHead(ListHead)
struct _FILE_OBJECT_FILTER_CONTEXTS * PFILE_OBJECT_FILTER_CONTEXTS
PFSRTL_PER_FILEOBJECT_CONTEXT NTAPI FsRtlLookupPerFileObjectContext(IN PFILE_OBJECT FileObject, IN PVOID OwnerId OPTIONAL, IN PVOID InstanceId OPTIONAL)
VOID NTAPI FsRtlTeardownPerStreamContexts(IN PFSRTL_ADVANCED_FCB_HEADER AdvFcbHeader)
LOGICAL NTAPI FsRtlIsPagingFile(IN PFILE_OBJECT FileObject)
PFSRTL_PER_FILEOBJECT_CONTEXT NTAPI FsRtlRemovePerFileObjectContext(IN PFILE_OBJECT FileObject, IN PVOID OwnerId OPTIONAL, IN PVOID InstanceId OPTIONAL)
struct _FILE_OBJECT_FILTER_CONTEXTS FILE_OBJECT_FILTER_CONTEXTS
NTSTATUS NTAPI FsRtlInsertPerStreamContext(IN PFSRTL_ADVANCED_FCB_HEADER AdvFcbHeader, IN PFSRTL_PER_STREAM_CONTEXT PerStreamContext)
VOID NTAPI FsRtlPTeardownPerFileObjectContexts(IN PFILE_OBJECT FileObject)
NTSTATUS NTAPI FsRtlInsertPerFileObjectContext(IN PFILE_OBJECT FileObject, IN PFSRTL_PER_FILEOBJECT_CONTEXT Ptr)
PFSRTL_PER_STREAM_CONTEXT NTAPI FsRtlLookupPerStreamContextInternal(IN PFSRTL_ADVANCED_FCB_HEADER AdvFcbHeader, 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)
_Must_inspect_result_ _In_opt_ PVOID _In_opt_ PVOID InstanceId
_Must_inspect_result_ _In_opt_ PVOID OwnerId
_Must_inspect_result_ _In_ PFSRTL_PER_STREAM_CONTEXT Ptr
struct _FSRTL_PER_FILEOBJECT_CONTEXT * PFSRTL_PER_FILEOBJECT_CONTEXT
#define FSRTL_FLAG2_SUPPORTS_FILTER_CONTEXTS
struct _FSRTL_PER_STREAM_CONTEXT * PFSRTL_PER_STREAM_CONTEXT
VOID FASTCALL ExAcquireFastMutex(IN PFAST_MUTEX FastMutex)
VOID FASTCALL ExReleaseFastMutex(IN PFAST_MUTEX FastMutex)
#define ExFreePoolWithTag(_P, _T)
#define FO_FILE_OBJECT_HAS_EXTENSION
NTSTATUS NTAPI IoChangeFileObjectFilterContext(IN PFILE_OBJECT FileObject, IN PVOID FilterContext, IN BOOLEAN Define)
PVOID NTAPI IoGetFileObjectFilterContext(IN PFILE_OBJECT FileObject)
BOOLEAN NTAPI MmIsFileObjectAPagingFile(PFILE_OBJECT FileObject)
PULONG MinorVersion OPTIONAL
FAST_MUTEX FilterContextsMutex
LIST_ENTRY FilterContexts
PFREE_FUNCTION FreeCallback
struct _LIST_ENTRY * Flink
#define CONTAINING_RECORD(address, type, field)
#define STATUS_INVALID_DEVICE_REQUEST
#define STATUS_INVALID_PARAMETER
#define STATUS_UNSUCCESSFUL
#define STATUS_INSUFFICIENT_RESOURCES
_In_ WDFREQUEST _In_ WDFFILEOBJECT FileObject
FORCEINLINE VOID ExInitializeFastMutex(_Out_ PFAST_MUTEX FastMutex)