25#ifndef _FXTRANSACTIONEDLIST_H_
26#define _FXTRANSACTIONEDLIST_H_
278#pragma prefast(suppress:__WARNING_UNMATCHED_DEFN, "_Must_inspect_result_ not needed in kernel mode as the function always succeeds");
FxSpinLockTransactionedList()
__drv_requiresIRQL(DISPATCH_LEVEL) virtual VOID ReleaseLock(__in PFX_DRIVER_GLOBALS FxDriverGlobals
__drv_raisesIRQL(DISPATCH_LEVEL) __drv_maxIRQL(DISPATCH_LEVEL) virtual VOID AcquireLock(__in PFX_DRIVER_GLOBALS FxDriverGlobals
_Must_inspect_result_ FxTransactionedEntry * GetNextEntryLocked(__in_opt FxTransactionedEntry *Entry)
virtual _Must_inspect_result_ NTSTATUS ProcessAdd(__in FxTransactionedEntry *Entry)
_Must_inspect_result_ FxTransactionedEntry * GetNextEntry(__in_opt FxTransactionedEntry *Entry)
VOID SearchForAndRemove(__in PFX_DRIVER_GLOBALS FxDriverGlobals, __in PVOID EntryData)
VOID ProcessObjectsToRelease(__in PLIST_ENTRY ReleaseHead)
VOID ProcessTransactionList(__in PLIST_ENTRY ReleaseHead)
VOID UnlockFromEnum(__in PFX_DRIVER_GLOBALS FxDriverGlobals)
LIST_ENTRY m_TransactionHead
BOOLEAN RemoveLocked(__in FxTransactionedEntry *Entry)
virtual VOID EntryRemoved(__in FxTransactionedEntry *Entry)
NTSTATUS Add(__in PFX_DRIVER_GLOBALS FxDriverGlobals, __in FxTransactionedEntry *Entry)
MxEvent * m_DeletingDoneEvent
virtual VOID EntryAdded(__in FxTransactionedEntry *Entry)
VOID LockForEnum(__in PFX_DRIVER_GLOBALS FxDriverGlobals)
ULONG m_ListLockedRecursionCount
virtual VOID ReleaseLock(__in PFX_DRIVER_GLOBALS FxDriverGlobals, __in KIRQL Irql)=0
BOOLEAN Deleting(__in PFX_DRIVER_GLOBALS FxDriverGlobals, __in_opt MxEvent *DeleteDoneEvent)
virtual VOID AcquireLock(__in PFX_DRIVER_GLOBALS FxDriverGlobals, __out PKIRQL Irql)=0
virtual BOOLEAN Compare(__in FxTransactionedEntry *Entry, __in PVOID Data)
CHECK_RETURN_IF_USER_MODE NTSTATUS Initialize()
FxWaitLockInternal m_StateChangeListLock
virtual _Acquires_lock_(_Global_critical_region_) VOID AcquireLock(__in PFX_DRIVER_GLOBALS FxDriverGlobals
virtual _Releases_lock_(_Global_critical_region_) VOID ReleaseLock(__in PFX_DRIVER_GLOBALS FxDriverGlobals
FxWaitLockTransactionedList(__in PFX_DRIVER_GLOBALS FxDriverGlobals)
__inline NTSTATUS Initialize(VOID)
#define __drv_restoresIRQL
#define __drv_maxIRQL(irql)
#define InitializeListHead(ListHead)
@ FxTransactionActionNothing
@ FxTransactionActionRemove
#define _Must_inspect_result_
#define UNREFERENCED_PARAMETER(P)
base of all file and directory entries
FxListTransactionAction GetTransactionAction(VOID)
VOID SetTransactionedObject(__in FxObject *Object)
FxObject * GetTransactionedObject(VOID)
friend FxTransactionedList
static FxTransactionedEntry * _FromEntry(__in PLIST_ENTRY Entry)
FxTransactionedEntry(__in_opt FxObject *Object=NULL)
FxObject * m_TransactionedObject
FxListTransactionAction m_Transaction
LIST_ENTRY m_TransactionLink
#define CONTAINING_RECORD(address, type, field)
_Must_inspect_result_ _In_ WDFCOLLECTION _In_ WDFOBJECT Object