37 #if defined(EVENT_TRACING) 38 #include "FxObject.hpp.tmh" 49 #define ADDREF(_tag) AddRef(_tag, __LINE__, __FILE__) 50 #define RELEASE(_tag) Release(_tag, __LINE__, __FILE__) 52 #define ADDREF_OFFSET(_tag, offset) AddRefOverride(offset, _tag, __LINE__, __FILE__) 53 #define RELEASE_OFFSET(_tag, offset) ReleaseOverride(offset, _tag, __LINE__, __FILE__) 125 #define FLAG_TO_BOOL(_Flags, _FlagMask) (!!((_Flags) & (_FlagMask))) 190 #define DECLARE_INTERNAL_NEW_OPERATOR() \ 195 __in PFX_DRIVER_GLOBALS FxDriverGlobals \ 198 return FxObjectHandleAlloc(FxDriverGlobals, \ 202 WDF_NO_OBJECT_ATTRIBUTES,\ 204 FxObjectTypeInternal); \ 241 #if FX_CORE_MODE==FX_CORE_USER_MODE 242 #ifndef INLINE_WRAPPER_ALLOCATION 376 "Object %p, WDFOBJECT %p transitioning from %!FxObjectState! to " 490 #ifdef INLINE_WRAPPER_ALLOCATION 492 #if FX_CORE_MODE==FX_CORE_USER_MODE 517 #if FX_CORE_MODE==FX_CORE_USER_MODE 591 #define GET_CONTEXT_HEADER() WDF_PTR_ADD_OFFSET_TYPE(this, m_ObjectSize, FxContextHeader*) 773 AllocationStart)->TagTracker;
844 if (pTagTracker !=
NULL) {
863 if (pTagTracker !=
NULL) {
937 "Object %p, WDFOBJECT %p, state %!FxObjectState! dropping event" 938 " %!FxObjectDroppedEvent!",
1288 if (FxDriverGlobals->IsPoolTrackingOn()) {
1403 if (PreviousIrql ==
NULL) {
1429 PerformEarlyDisposeWorkerAndUnlock(
1437 PerformDisposingDisposeChildrenLocked(
1445 DeleteWorkerAndUnlock(
1463 DisposeChildrenWorker(
1472 DeletedAndDisposedWorkerLocked(
1506 #endif // _FXOBJECT_H_ USHORT GetObjectSize(VOID)
VOID _In_ BOOLEAN Embedded
VOID MarkTraceState(VOID)
__drv_restoresIRQL KIRQL __in BOOLEAN Unlock
virtual VOID DeleteObject(VOID)
FxObjectDebugExtensionValues
VOID AllocateTagTracker(__in WDFTYPE Type)
VOID __inline SetObjectStateLocked(__in FxObjectState NewState)
#define FLAG_TO_BOOL(_Flags, _FlagMask)
virtual ULONG Release(__in_opt PVOID Tag=NULL, __in LONG Line=0, __in_opt PSTR File=NULL)
_Must_inspect_result_ NTSTATUS AddChildObjectInternal(__in FxObject *ChildObject)
BOOLEAN __inline IsTraceState(VOID)
FxTagTracker * GetTagTracker(VOID)
_Must_inspect_result_ NTSTATUS RemoveParentAssignment(VOID)
virtual VOID SelfDestruct(VOID)
_In_ WDFIOTARGET _In_ PWDF_REQUEST_COMPLETION_PARAMS Params
_Must_inspect_result_ NTSTATUS Commit(__in_opt PWDF_OBJECT_ATTRIBUTES Attributes, __out_opt WDFOBJECT *ObjectHandle, __in_opt FxObject *Parent=NULL, __in BOOLEAN AssignDriverAsDefaultParent=TRUE)
VOID ProcessDestroy(VOID)
static _Must_inspect_result_ NTSTATUS _GetEffectiveLock(__in FxObject *Object, __in_opt IFxHasCallbacks *Callbacks, __in BOOLEAN AutomaticLocking, __in BOOLEAN PassiveCallbacks, __out FxCallbackLock **CallbackLock, __out_opt FxObject **CallbackLockObject)
static FxObject * _FromDisposeEntry(__in PSINGLE_LIST_ENTRY Entry)
static PVOID _GetBase(__in FxObject *Object)
USHORT ForceDisposeThread
#define UNREFERENCED_PARAMETER(P)
FxObject * m_ParentObject
#define __drv_restoresIRQL
VOID MarkForceDisposeThread(__in FxObjectLockState State=ObjectLock)
_Must_inspect_result_ NTSTATUS AddContext(__in FxContextHeader *Header, __in PVOID *Context, __in PWDF_OBJECT_ATTRIBUTES Attributes)
VOID MarkPassiveDispose(__in FxObjectLockState State=ObjectLock)
IN PVOID IN PVOID IN USHORT IN USHORT Size
VOID ParentDeleteEvent(VOID)
VOID DeferredDisposeWorkItem(VOID)
VOID SetDeviceBase(__in CfxDeviceBase *DeviceBase)
#define DECLSPEC_SELECTANY
typedef DECLSPEC_ALIGN(8) USHORT WDFOBJECT_OFFSET_ALIGNED
#define TRACE_LEVEL_INFORMATION
_Must_inspect_result_ _In_ WDFOBJECT _In_ CONST GUID _In_ ULONG QueryBufferLength
_Must_inspect_result_ FORCEINLINE BOOLEAN IsListEmpty(_In_ const LIST_ENTRY *ListHead)
BOOLEAN IsPassiveDispose(__in BOOLEAN AcquireLock=TRUE)
VOID __inline FxPoolRemoveNonPagedAllocateTracker(__in PFX_POOL_TRACKER Tracker)
VOID __inline Construct(__in BOOLEAN Embedded)
VOID DeleteEarlyDisposedObject(VOID)
static PFX_POOL_HEADER _CleanupPointer(__in PFX_DRIVER_GLOBALS FxDriverGlobals, __in FxObject *Object)
_Must_inspect_result_ NTSTATUS RemoveParentAssociation(VOID)
BOOLEAN PerformEarlyDispose(VOID)
BOOLEAN MarkDeleteCalledLocked(VOID)
BOOLEAN EarlyDispose(VOID)
USHORT * PWDFOBJECT_OFFSET
namespace GUID const ADDRINFOEXW ADDRINFOEXW struct timeval OVERLAPPED LPLOOKUPSERVICE_COMPLETION_ROUTINE HANDLE * handle
#define TRACE_LEVEL_VERBOSE
BOOLEAN IsPassiveDisposeLocked(VOID)
enum FxObjectType UINT32 enum FxWmiInstanceAction UINT32 enum FxDriverObjectUmFlags USHORT enum FxWakeInterruptEvents UINT32 PVOID FxObjectHandleAlloc(__in PFX_DRIVER_GLOBALS FxDriverGlobals, __in POOL_TYPE PoolType, __in size_t Size, __in ULONG Tag, __in_opt PWDF_OBJECT_ATTRIBUTES Attributes, __in USHORT ExtraSize, __in FxObjectType ObjectType)
VOID MarkDisposeOverride(__in FxObjectLockState State=ObjectLock)
PVOID __inline GetObjectHandle(VOID)
FxContextHeader * pHeader
DECLSPEC_ALIGN(MEMORY_ALLOCATION_ALIGNMENT) ULONG AllocationStart[1]
FORCEINLINE PLIST_ENTRY RemoveHeadList(_Inout_ PLIST_ENTRY ListHead)
#define GET_CONTEXT_HEADER()
SINGLE_LIST_ENTRY m_DisposeSingleEntry
DECLSPEC_SELECTANY const ULONG_PTR FxHandleValueMask
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 MarkPassiveCallbacks(__in FxObjectLockState State=ObjectLock)
_Must_inspect_result_ _In_opt_ PWDF_OBJECT_ATTRIBUTES _In_ _Strict_type_match_ POOL_TYPE _In_opt_ ULONG _In_ _Out_ WDFMEMORY * Memory
__in __drv_restoresIRQL KIRQL OldIrql
const struct winhelp_callbacks Callbacks
static PVOID _GetDebugBase(__in FxObject *Object)
_Must_inspect_result_ _In_ WDFOBJECT _In_ CONST GUID * Guid
BOOLEAN IsPassiveCallbacks(__in BOOLEAN AcquireLock=TRUE)
virtual ULONG AddRefOverride(__in WDFOBJECT_OFFSET Offset, __in_opt PVOID Tag=NULL, __in LONG Line=0, __in_opt PSTR File=NULL)
static _Must_inspect_result_ NTSTATUS _ObjectQuery(_In_ FxObject *Object, _In_ CONST GUID *Guid, _In_ ULONG QueryBufferLength, _Out_writes_bytes_(QueryBufferLength) PVOID QueryBuffer)
BOOLEAN IsNoDeleteDDI(VOID)
#define __drv_when(cond, annotes)
BOOLEAN IsCommitted(VOID)
static __inline KIRQL MxGetCurrentIrql()
VOID UpdateTagHistory(__in PVOID Tag, __in LONG Line, __in_opt PSTR File, __in FxTagRefType RefType, __in ULONG RefCount)
static VOID __inline _ReferenceActual(__in WDFOBJECT Object, __in_opt PVOID Tag, __in LONG Line, __in PSTR File)
__drv_requiresIRQL(DISPATCH_LEVEL)) VOID DeletedAndDisposedWorkerLocked(__in __drv_when(Unlock
FxObjectDebugExtension * GetDebugExtension(VOID)
struct _SINGLE_LIST_ENTRY * Next
BOOLEAN IsForceDisposeThreadLocked(VOID)
PVOID __inline GetObjectHandleUnchecked(VOID)
#define InterlockedDecrement
CfxDeviceBase * m_DeviceBase
pPkgPnp m_DeviceInterfaceLock AcquireLock(pFxDriverGlobals)
VOID ClearEvtCallbacks(VOID)
VOID MarkNoDeleteDDI(__in FxObjectLockState State=ObjectLock)
VOID QueueDeferredDisposeLocked(__in FxObjectState NewDeferedState)
_Must_inspect_result_ NTSTATUS AssignParentObject(__in FxObject *ParentObject)
VOID CallCleanupCallbacks(VOID)
VOID SetNoContextHeader(VOID)
#define _Must_inspect_result_
_Must_inspect_result_ _In_ WDFDEVICE _In_ BOOLEAN _In_opt_ PVOID Tag
friend VOID GetTriageInfo(VOID)
_Must_inspect_result_ _In_ WDFCOLLECTION _In_ WDFOBJECT Object
CfxDevice * GetDevice(VOID)
VOID __inline DestroyChildren(VOID)
__inline FxContextHeader * GetContextHeader(VOID)
_In_ ULONG _In_ ULONG Offset
virtual ULONG ReleaseOverride(__in WDFOBJECT_OFFSET Offset, __in_opt PVOID Tag=NULL, __in LONG Line=0, __in_opt PSTR File=NULL)
static VOID __inline _DereferenceActual(__in WDFOBJECT Object, __in_opt PVOID Tag, __in LONG Line, __in PSTR File)
__inline PFX_DRIVER_GLOBALS GetDriverGlobals(VOID)
#define InterlockedIncrement
__inline VOID CallCleanup(VOID)
#define InitializeListHead(ListHead)
DoTraceLevelMessage(pFxDriverGlobals, TRACE_LEVEL_VERBOSE, TRACINGPNP, "Enter, WDFDEVICE %p", Device)
#define FIELD_OFFSET(t, f)
PFX_DRIVER_GLOBALS m_Globals
static FxObject * _GetObjectFromHandle(__in WDFOBJECT Handle, __inout PWDFOBJECT_OFFSET ObjectOffset)
#define WDF_NO_OBJECT_ATTRIBUTES
_When_(Unlock, _Releases_lock_(this->m_SpinLock.m_Lock)) __drv_when(Unlock
ULONG __inline AddRef(__in_opt PVOID Tag=NULL, __in LONG Line=0, __in_opt PSTR File=NULL)
static PVOID __inline _ToHandle(__in FxObject *Object)
ACPI_PHYSICAL_ADDRESS ACPI_SIZE BOOLEAN Warn UINT32 *TableIdx UINT32 ACPI_TABLE_HEADER *OutTableHeader ACPI_TABLE_HEADER **OutTable ACPI_HANDLE UINT32 ACPI_WALK_CALLBACK ACPI_WALK_CALLBACK void void **ReturnValue UINT32 ACPI_BUFFER *RetPathPtr ACPI_OBJECT_HANDLER void *Data ACPI_OBJECT_HANDLER void **Data ACPI_STRING ACPI_OBJECT_LIST ACPI_BUFFER *ReturnObjectBuffer ACPI_DEVICE_INFO **ReturnBuffer ACPI_HANDLE Parent
FX_DECLARE_VF_FUNCTION_P1(VOID, VerifyConstruct, _In_ BOOLEAN)
VOID DeleteFromFailedCreate(VOID)
void SetCOMWrapper(__drv_aliasesMem PVOID Wrapper)
FxTagTracker * TagTracker
struct FxObject::@4552::@4556 m_ObjectFlagsByName
_Releases_lock_(this->m_SpinLock.m_Lock) __drv_requiresIRQL(DISPATCH_LEVEL) BOOLEAN PerformEarlyDisposeWorkerAndUnlock(__in __drv_restoresIRQL KIRQL OldIrql
virtual _Must_inspect_result_ NTSTATUS QueryInterface(__in FxQueryInterfaceParams *Params)
FxVerifierLock * VerifierLock
virtual BOOLEAN Dispose(VOID)
LIST_ENTRY m_ChildListHead
BOOLEAN ShouldDeferDisposeLocked(__out_opt PKIRQL PreviousIrql=NULL)
_Must_inspect_result_ FxObject * GetParentObjectReferenced(__in PVOID Tag)
#define _Out_writes_bytes_(size)
BOOLEAN IsPassiveCallbacksLocked(VOID)
BOOLEAN IsForceDisposeThread(__in BOOLEAN AcquireLock=TRUE)
#define MEMORY_ALLOCATION_ALIGNMENT
FX_POOL_TRACKER * PFX_POOL_TRACKER
CfxDeviceBase * GetDeviceBase(VOID)
VOID __inline TraceDroppedEvent(__in FxObjectDroppedEvent Event)
base of all file and directory entries
_Must_inspect_result_ _In_ WDFDMAENABLER _In_ _In_opt_ PWDF_OBJECT_ATTRIBUTES Attributes
_Must_inspect_result_ NTSTATUS RemoveChildObjectInternal(__in FxObject *ChildObject)