76 "WDFTIMER %p destroyed without calling WdfObjectDelete, " 77 "or by Framework processing DeviceRemove. Possible reference count " 134 isPassiveTimer =
FALSE;
162 #if (FX_CORE_MODE == FX_CORE_KERNEL_MODE) 178 "Failed to initialize timer %!STATUS!",
status);
201 isPassiveTimer =
TRUE;
210 Config->AutomaticSerialization,
226 "ParentObject %p cannot automatically synchronize callbacks " 227 "with a Timer since it is configured for passive level callback " 228 "constraints. Set AutomaticSerialization to FALSE. %!STATUS!",
238 if (isPassiveTimer) {
245 "Could not allocate workitem: %!STATUS!",
status);
279 ParentObject->ADDREF(
this);
365 #if (FX_CORE_MODE==FX_CORE_KERNEL_MODE) 413 #if (FX_CORE_MODE==FX_CORE_KERNEL_MODE) 501 "Deleting WDFTIMER %p from with in the callback will " 502 "lead to deadlock, PRKTHREAD %p",
573 "Calling WdfTimerStart when the timer object %p is" 574 " running down will lead to a crash",
581 "WDFTIMER 0x%p is been stopped by PRKTHREAD 0x%p. " 582 "Ignoring the request to start timer",
640 ULONG retryCount = 0;
661 "Calling WdfTimerStop from within the WDFTIMER " 662 "%p callback will lead to deadlock, PRKTHREAD %p",
672 "WdfTimerStop(Wait==TRUE) called at IRQL > PASSIVE_LEVEL, " 691 "Detected multiple calls to WdfTimerStop for " 692 "WDFTIMER 0x%p, stop in progress on PRKTHREAD 0x%p, " 693 "current PRKTHREAD 0x%p",
__drv_restoresIRQL KIRQL __in BOOLEAN Unlock
virtual VOID DeleteObject(VOID)
static _Must_inspect_result_ NTSTATUS _Create(__in PFX_DRIVER_GLOBALS FxDriverGlobals, __in PWDF_TIMER_CONFIG Config, __in PWDF_OBJECT_ATTRIBUTES Attributes, __in FxObject *ParentObject, __out WDFTIMER *Timer)
CHECK_RETURN_IF_USER_MODE __inline NTSTATUS Initialize(__in_opt PVOID TimerContext, __in MdDeferredRoutine TimerCallback, __in LONG Period)
__inline VOID FlushQueuedDpcs(VOID)
static _Must_inspect_result_ NTSTATUS _Create(__in PFX_DRIVER_GLOBALS FxDriverGlobals, __in PVOID WdmObject, __out FxSystemWorkItem **pObject)
#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)
FxSystemWorkItem * m_SystemWorkItem
FxCallbackLock * m_CallbackLock
#define UNREFERENCED_PARAMETER(P)
_In_ WDFDPC _In_ BOOLEAN Wait
BOOLEAN m_UseHighResolutionTimer
VOID MarkPassiveDispose(__in FxObjectLockState State=ObjectLock)
BOOLEAN Stop(__in BOOLEAN Wait)
FxTimer(__in PFX_DRIVER_GLOBALS FxDriverGlobals)
#define STATUS_INVALID_DEVICE_REQUEST
_Must_inspect_result_ NTSTATUS Initialize(__in PWDF_OBJECT_ATTRIBUTES Attributes, __in PWDF_TIMER_CONFIG Config, __in FxObject *ParentObject, __out WDFTIMER *Timer)
virtual BOOLEAN Dispose(VOID)
static FN_WDF_SYSTEMWORKITEM _FxTimerWorkItemCallback
__inline BOOLEAN TryToEnqueue(__in PFN_WDF_SYSTEMWORKITEM CallbackFunc, __in PVOID Parameter)
static FxDeviceBase * _SearchForDevice(__in FxObject *Object, __out_opt IFxHasCallbacks **Callbacks)
static void startTimer(void)
BOOLEAN Start(__in LARGE_INTEGER DueTime)
struct _EX_TIMER * PEX_TIMER
virtual void Lock(__out PKIRQL PreviousIrql)=0
VOID MarkDisposeOverride(__in FxObjectLockState State=ObjectLock)
#define STATUS_WDF_INCOMPATIBLE_EXECUTION_LEVEL
_In_opt_ PVOID _In_opt_ PVOID SystemArgument1
PFX_DRIVER_GLOBALS pFxDriverGlobals
#define NT_SUCCESS(StatCode)
FORCEINLINE VOID FxPerfTraceDpc(_In_ PVOID DriverCallback)
__inline BOOLEAN StartWithReturn(__in LARGE_INTEGER DueTime, __in ULONG TolerableDelay=0)
static __inline KIRQL MxGetCurrentIrql()
VOID FlushAndRundown(VOID)
PVOID __inline GetObjectHandleUnchecked(VOID)
CfxDeviceBase * m_DeviceBase
#define _Must_inspect_result_
virtual void Unlock(__in KIRQL PreviousIrql)=0
_Must_inspect_result_ _In_ WDFDEVICE _In_ PWDF_CHILD_LIST_CONFIG Config
#define TRACE_LEVEL_ERROR
_In_opt_ PVOID _In_opt_ PVOID _In_opt_ PVOID SystemArgument2
static __inline MxThread MxGetCurrentThread()
__inline PFX_DRIVER_GLOBALS GetDriverGlobals(VOID)
static MdExtCallbackType _FxTimerExtCallbackThunk
DoTraceLevelMessage(pFxDriverGlobals, TRACE_LEVEL_VERBOSE, TRACINGPNP, "Enter, WDFDEVICE %p", Device)
_In_ WDFTIMER _In_ LONGLONG DueTime
volatile POINTER_ALIGNMENT MxThread m_CallbackThread
VOID DeleteFromFailedCreate(VOID)
FX_TRACK_DRIVER(fxDriverGlobals)
_Must_inspect_result_ _In_opt_ PWDF_OBJECT_ATTRIBUTES _Out_ WDFWAITLOCK * Lock
static MdDeferredRoutineType _FxTimerDpcThunk
static SERVICE_STATUS status
FxObject * m_CallbackLockObject
FxVerifierDbgBreakPoint(pFxDriverGlobals)
_Must_inspect_result_ __inline BOOLEAN Stop(VOID)
_Must_inspect_result_ _In_ WDFDMAENABLER _In_ _In_opt_ PWDF_OBJECT_ATTRIBUTES Attributes
_In_opt_ PVOID DeferredContext