31 #if (FX_CORE_MODE == FX_CORE_USER_MODE) 83 "WDFWORKITEM %p destroyed without calling WdfObjectDelete, or by " 84 "Framework processing DeviceRemove. Possible reference count " 155 #if (FX_CORE_MODE == FX_CORE_USER_MODE) 159 "Could not initialize m_WorkItemCompleted event " 196 Config->AutomaticSerialization,
212 "ParentObject %p cannot automatically synchronize callbacks " 213 "with a WorkItem since it is not configured for passive level " 214 "callback constraints. Use a WDFDPC instead or set " 215 "AutomaticSerialization to FALSE." 225 #if (FX_CORE_MODE == FX_CORE_KERNEL_MODE) 227 #elif (FX_CORE_MODE == FX_CORE_USER_MODE) 236 "Could not allocate IoWorkItem, %!STATUS!",
status);
269 ParentObject->ADDREF(
this);
304 "Previously queued WDFWORKITEM 0x%p is already pending. " 305 "Ignoring the request to queue again",
GetHandle());
309 "WDFWORKITEM 0x%p is already deleted",
GetHandle());
361 #if FX_IS_KERNEL_MODE 368 #if FX_IS_KERNEL_MODE 516 "Calling WdfWorkItemFlush from within the WDFWORKITEM " 517 "%p callback will lead to deadlock, PRKTHREAD %p",
548 DbgPrint(
"Thread 0x%p is waiting on WDFWORKITEM 0x%p\n",
__drv_restoresIRQL KIRQL __in BOOLEAN Unlock
static MX_WORKITEM_ROUTINE WorkItemThunk
CHECK_RETURN_IF_USER_MODE NTSTATUS Initialize(__in BOOLEAN InitialState=FALSE)
#define STATUS_INSUFFICIENT_RESOURCES
MdDeviceObject __inline GetDeviceObject(VOID)
_Must_inspect_result_ NTSTATUS Commit(__in_opt PWDF_OBJECT_ATTRIBUTES Attributes, __out_opt WDFOBJECT *ObjectHandle, __in_opt FxObject *Parent=NULL, __in BOOLEAN AssignDriverAsDefaultParent=TRUE)
ActualNumberDriverObjects * sizeof(PDRIVER_OBJECT)) PDRIVER_OBJECT *DriverObjectList
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)
__inline MdWorkItem GetWorkItem()
#define UNREFERENCED_PARAMETER(P)
MxThread m_WorkItemThread
#define STATUS_INVALID_DEVICE_REQUEST
FxCallbackLock * m_CallbackLock
PFN_WDF_WORKITEM m_Callback
FxWorkItem(__in PFX_DRIVER_GLOBALS FxDriverGlobals)
static FxDeviceBase * _SearchForDevice(__in FxObject *Object, __out_opt IFxHasCallbacks **Callbacks)
WDFWORKITEM GetHandle(VOID)
_In_ PDEVICE_OBJECT DeviceObject
#define TRACE_LEVEL_VERBOSE
FORCEINLINE VOID FxPerfTraceWorkItem(_In_ PVOID DriverCallback)
virtual void Lock(__out PKIRQL PreviousIrql)=0
VOID MarkDisposeOverride(__in FxObjectLockState State=ObjectLock)
#define STATUS_WDF_INCOMPATIBLE_EXECUTION_LEVEL
NTSTATUS EnterCRAndWaitAndLeave(VOID)
_Must_inspect_result_ __inline NTSTATUS Allocate(__in MdDeviceObject DeviceObject, __in_opt PVOID ThreadPoolEnv=NULL)
FxCREvent m_WorkItemCompleted
VOID MarkPassiveCallbacks(__in FxObjectLockState State=ObjectLock)
FxObject * m_CallbackLockObject
PFX_DRIVER_GLOBALS pFxDriverGlobals
#define NT_SUCCESS(StatCode)
_Must_inspect_result_ NTSTATUS Initialize(__in PWDF_OBJECT_ATTRIBUTES Attributes, __in PWDF_WORKITEM_CONFIG Config, __in FxObject *ParentObject, __out WDFWORKITEM *WorkItem)
ULONG m_WorkItemRunningCount
static __inline KIRQL MxGetCurrentIrql()
__inline FxDriver * GetDriver(VOID)
PVOID __inline GetObjectHandleUnchecked(VOID)
CfxDeviceBase * m_DeviceBase
#define _Must_inspect_result_
virtual void Unlock(__in KIRQL PreviousIrql)=0
static __inline MdEThread GetCurrentEThread()
_Must_inspect_result_ _In_ WDFDEVICE _In_ PWDF_CHILD_LIST_CONFIG Config
static _Must_inspect_result_ NTSTATUS _Create(__in PFX_DRIVER_GLOBALS FxDriverGlobals, __in PWDF_WORKITEM_CONFIG Config, __in PWDF_OBJECT_ATTRIBUTES Attributes, __in FxObject *ParentObject, __out WDFWORKITEM *WorkItem)
#define TRACE_LEVEL_ERROR
FORCEINLINE LONGLONG WDF_REL_TIMEOUT_IN_SEC(_In_ ULONGLONG Time)
__inline MdDriverObject GetDriverObject(VOID)
static __inline MxThread MxGetCurrentThread()
__inline PFX_DRIVER_GLOBALS GetDriverGlobals(VOID)
DoTraceLevelMessage(pFxDriverGlobals, TRACE_LEVEL_VERBOSE, TRACINGPNP, "Enter, WDFDEVICE %p", Device)
VOID DeleteFromFailedCreate(VOID)
FX_TRACK_DRIVER(fxDriverGlobals)
_Must_inspect_result_ _In_opt_ PWDF_OBJECT_ATTRIBUTES _Out_ WDFWAITLOCK * Lock
_Must_inspect_result_ _In_ PWDF_WORKITEM_CONFIG _In_ PWDF_OBJECT_ATTRIBUTES _Out_ WDFWORKITEM * WorkItem
virtual BOOLEAN Dispose(VOID)
static SERVICE_STATUS status
FxVerifierDbgBreakPoint(pFxDriverGlobals)
_Must_inspect_result_ _In_ WDFDMAENABLER _In_ _In_opt_ PWDF_OBJECT_ATTRIBUTES Attributes