38#if defined(EVENT_TRACING)
39#include "FxObjectStateMachine.tmh"
124 DeleteWorkerAndUnlock(oldIrql,
TRUE);
148 DeletedAndDisposedWorkerLocked(oldIrql);
268 if (pTagTracker !=
NULL) {
363 if (pTagTracker !=
NULL) {
461 result = PerformEarlyDisposeWorkerAndUnlock(oldIrql,
TRUE);
522 result = PerformEarlyDisposeWorkerAndUnlock(oldIrql,
FALSE);
529 result = PerformEarlyDisposeWorkerAndUnlock(oldIrql,
FALSE);
537 result = PerformDisposingDisposeChildrenLocked(oldIrql,
FALSE);
652 DeletedAndDisposedWorkerLocked(oldIrql,
TRUE);
734 result = PerformDisposingDisposeChildrenLocked(oldIrql,
FALSE);
753 DeletedAndDisposedWorkerLocked(oldIrql,
FALSE);
786FxObject::PerformDisposingDisposeChildrenLocked(
828 if ((m_ObjectFlags & edFlags) == edFlags) {
857FxObject::PerformEarlyDisposeWorkerAndUnlock(
886 if (CanDefer && ShouldDeferDisposeLocked(&
OldIrql)) {
893 return PerformDisposingDisposeChildrenLocked(
OldIrql, CanDefer);
928 if (CanDefer && ShouldDeferDisposeLocked(&
OldIrql)) {
1099 QueueDeferredDisposeLocked(NewDeferedState);
1102 SetObjectStateLocked(NewDeferedState);
1110 for (
ple = m_ChildListHead.Flink;
1111 ple != &m_ChildListHead;
1122 ASSERT(childObject !=
this);
1140 QueueDeferredDisposeLocked(NewDeferedState);
1143 SetObjectStateLocked(NewDeferedState);
1153 for (
ple = m_ChildListHead.Flink;
ple != &m_ChildListHead;
ple =
ple->Flink) {
1164 QueueDeferredDisposeLocked(NewDeferedState);
1167 SetObjectStateLocked(NewDeferedState);
1199FxObject::DeletedAndDisposedWorkerLocked(
void destroy(_Tp *__pointer)
VOID AddToDisposeList(__inout FxObject *Object)
VOID Add(FxObject *object)
__inline FxDisposeList * GetDisposeList()
FxObjectDebugExtension * GetDebugExtension(VOID)
VOID QueueDeferredDisposeLocked(__in FxObjectState NewDeferedState)
PFX_DRIVER_GLOBALS m_Globals
BOOLEAN MarkDeleteCalledLocked(VOID)
_Must_inspect_result_ NTSTATUS RemoveParentAssignment(VOID)
VOID ParentDeleteEvent(VOID)
_Must_inspect_result_ NTSTATUS RemoveChildObjectInternal(__in FxObject *ChildObject)
virtual VOID DeleteObject(VOID)
BOOLEAN IsPassiveDisposeLocked(VOID)
PVOID __inline GetObjectHandleUnchecked(VOID)
VOID DeferredDisposeWorkItem(VOID)
VOID __inline TraceDroppedEvent(__in FxObjectDroppedEvent Event)
FxObject * m_ParentObject
CfxDeviceBase * m_DeviceBase
VOID DeleteEarlyDisposedObject(VOID)
BOOLEAN EarlyDispose(VOID)
VOID ProcessDestroy(VOID)
virtual BOOLEAN Dispose(VOID)
FxTagTracker * GetTagTracker(VOID)
__inline FxContextHeader * GetContextHeader(VOID)
VOID __inline SetObjectStateLocked(__in FxObjectState NewState)
BOOLEAN IsCommitted(VOID)
BOOLEAN PerformEarlyDispose(VOID)
virtual VOID SelfDestruct(VOID)
VOID CheckForAbandondedTags(VOID)
#define _Releases_lock_(lock)
#define NT_SUCCESS(StatCode)
#define __drv_when(cond, annotes)
#define __drv_restoresIRQL
#define __drv_requiresIRQL(irql)
@ FxObjectStateDeferedDeleting
@ FxObjectStateDisposingDisposeChildren
@ FxObjectStateWaitingForEarlyDispose
@ FxObjectStateDeletedDisposing
@ FxObjectStateWaitingForParentDeleteAndDisposed
@ FxObjectStateDeletedAndDisposed
@ FxObjectStateDisposingEarly
@ FxObjectStateDeferedDisposing
@ FxObjectStateDeferedDestroy
@ FXOBJECT_FLAGS_DELETECALLED
@ FXOBJECT_FLAGS_DISPOSE_OVERRIDE
@ FXOBJECT_FLAGS_EARLY_DISPOSED_EXT
@ FxObjectDroppedEventDeleteObject
@ FxObjectDroppedEventParentDeleteEvent
@ FxObjectDroppedEventPerformEarlyDispose
@ FxObjectDroppedEventRemoveParentAssignment
void FxPoolFree(__in_xcount(ptr is at an offset from AllocationStart) PVOID ptr)
GLfloat GLfloat GLfloat GLfloat h
FxContextHeader * pHeader
#define _Must_inspect_result_
#define UNREFERENCED_PARAMETER(P)
#define STATUS_DELETE_PENDING
FxTagTracker * TagTracker
#define CONTAINING_RECORD(address, type, field)
_Requires_lock_held_ Interrupt _Releases_lock_ Interrupt _In_ _IRQL_restores_ KIRQL OldIrql