91 "WorkItem destroyed without calling " 92 "FxSystemWorkItem::Delete, or by Framework " 93 "processing DeviceRemove. " 94 "Possible reference count problem?");
125 #if (FX_CORE_MODE == FX_CORE_USER_MODE) 129 "Could not initialize m_WorkItemCompleted event " 130 "status %!status!",
status);
137 "Could not initialize m_RemoveEvent event " 138 "status %!status!",
status);
149 "Could not allocate IoWorkItem, insufficient resources");
196 if (AssertIfAlreadyQueued) {
198 "WorkItem 0x%p already enqueued IoWorkItem 0x%p",
212 "WorkItem 0x%p is already deleted",
this);
PFN_WDF_SYSTEMWORKITEM m_Callback
__drv_restoresIRQL KIRQL __in BOOLEAN Unlock
CHECK_RETURN_IF_USER_MODE NTSTATUS Initialize(__in BOOLEAN InitialState=FALSE)
virtual ULONG Release(__in_opt PVOID Tag=NULL, __in LONG Line=0, __in_opt PSTR File=NULL)
static _Must_inspect_result_ NTSTATUS _Create(__in PFX_DRIVER_GLOBALS FxDriverGlobals, __in PVOID WdmObject, __out FxSystemWorkItem **pObject)
LONG m_OutStandingWorkItem
#define STATUS_INSUFFICIENT_RESOURCES
virtual ~FxSystemWorkItem()
FxSystemWorkItem(__in PFX_DRIVER_GLOBALS FxDriverGlobals)
__inline MdWorkItem GetWorkItem()
#define UNREFERENCED_PARAMETER(P)
EVT_SYSTEMWORKITEM * PFN_WDF_SYSTEMWORKITEM
FxCREvent m_WorkItemCompleted
virtual BOOLEAN Dispose(VOID)
_In_ PDEVICE_OBJECT DeviceObject
VOID MarkDisposeOverride(__in FxObjectLockState State=ObjectLock)
NTSTATUS EnterCRAndWaitAndLeave(VOID)
_Must_inspect_result_ __inline NTSTATUS Allocate(__in MdDeviceObject DeviceObject, __in_opt PVOID ThreadPoolEnv=NULL)
__inline VOID DecrementWorkItemQueued()
VOID MarkPassiveCallbacks(__in FxObjectLockState State=ObjectLock)
PFX_DRIVER_GLOBALS pFxDriverGlobals
#define NT_SUCCESS(StatCode)
static __inline KIRQL MxGetCurrentIrql()
__inline VOID Enqueue(__in PMX_WORKITEM_ROUTINE Callback, __in PVOID Context)
BOOLEAN EnqueueWorker(__in PFN_WDF_SYSTEMWORKITEM Func, __in PVOID Parameter, __in BOOLEAN AssertIfAlreadyQueued)
#define _Must_inspect_result_
#define TRACE_LEVEL_ERROR
_In_ WDFINTERRUPT _In_ PFN_WDF_INTERRUPT_SYNCHRONIZE Callback
__inline PFX_DRIVER_GLOBALS GetDriverGlobals(VOID)
DoTraceLevelMessage(pFxDriverGlobals, TRACE_LEVEL_VERBOSE, TRACINGPNP, "Enter, WDFDEVICE %p", Device)
_Must_inspect_result_ NTSTATUS Initialize(__in PVOID WdmObject)
ULONG m_WorkItemRunningCount
FX_TRACK_DRIVER(fxDriverGlobals)
_Must_inspect_result_ _In_opt_ PWDF_OBJECT_ATTRIBUTES _Out_ WDFWAITLOCK * Lock
__inline VOID ReleaseWorkItemQueuedCountAndWait()
__inline VOID IncrementWorkItemQueued()
static MX_WORKITEM_ROUTINE _WorkItemThunk
static SERVICE_STATUS status
FxVerifierDbgBreakPoint(pFxDriverGlobals)