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",
virtual void Lock(__out PKIRQL PreviousIrql)=0
virtual void Unlock(__in KIRQL PreviousIrql)=0
static FxDeviceBase * _SearchForDevice(__in FxObject *Object, __out_opt IFxHasCallbacks **Callbacks)
MdDeviceObject __inline GetDeviceObject(VOID)
VOID MarkPassiveDispose(__in FxObjectLockState State=ObjectLock)
virtual VOID DeleteObject(VOID)
PVOID __inline GetObjectHandleUnchecked(VOID)
__inline PFX_DRIVER_GLOBALS GetDriverGlobals(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)
CfxDeviceBase * m_DeviceBase
__drv_restoresIRQL KIRQL __in BOOLEAN Unlock
VOID DeleteFromFailedCreate(VOID)
VOID MarkDisposeOverride(__in FxObjectLockState State=ObjectLock)
_Must_inspect_result_ NTSTATUS Commit(__in_opt PWDF_OBJECT_ATTRIBUTES Attributes, __out_opt WDFOBJECT *ObjectHandle, __in_opt FxObject *Parent=NULL, __in BOOLEAN AssignDriverAsDefaultParent=TRUE)
static _Must_inspect_result_ NTSTATUS _Create(__in PFX_DRIVER_GLOBALS FxDriverGlobals, __in PVOID WdmObject, __out FxSystemWorkItem **pObject)
__inline BOOLEAN TryToEnqueue(__in PFN_WDF_SYSTEMWORKITEM CallbackFunc, __in PVOID Parameter)
FxSystemWorkItem * m_SystemWorkItem
static MdExtCallbackType _FxTimerExtCallbackThunk
_Must_inspect_result_ NTSTATUS Initialize(__in PWDF_OBJECT_ATTRIBUTES Attributes, __in PWDF_TIMER_CONFIG Config, __in FxObject *ParentObject, __out WDFTIMER *Timer)
FxObject * m_CallbackLockObject
static FN_WDF_SYSTEMWORKITEM _FxTimerWorkItemCallback
BOOLEAN Stop(__in BOOLEAN Wait)
virtual BOOLEAN Dispose(VOID)
static MdDeferredRoutineType _FxTimerDpcThunk
FxTimer(__in PFX_DRIVER_GLOBALS FxDriverGlobals)
FxCallbackLock * m_CallbackLock
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)
BOOLEAN m_UseHighResolutionTimer
BOOLEAN Start(__in LARGE_INTEGER DueTime)
VOID FlushAndRundown(VOID)
volatile POINTER_ALIGNMENT MxThread m_CallbackThread
_Must_inspect_result_ __inline BOOLEAN Stop(VOID)
__inline VOID FlushQueuedDpcs(VOID)
CHECK_RETURN_IF_USER_MODE __inline NTSTATUS Initialize(__in_opt PVOID TimerContext, __in MdDeferredRoutine TimerCallback, __in LONG Period)
__inline BOOLEAN StartWithReturn(__in LARGE_INTEGER DueTime, __in ULONG TolerableDelay=0)
static __inline MxThread MxGetCurrentThread()
static __inline KIRQL MxGetCurrentIrql()
#define NT_SUCCESS(StatCode)
DoTraceLevelMessage(pFxDriverGlobals, TRACE_LEVEL_VERBOSE, TRACINGPNP, "Enter, WDFDEVICE %p", Device)
PFX_DRIVER_GLOBALS pFxDriverGlobals
FX_TRACK_DRIVER(fxDriverGlobals)
FxVerifierDbgBreakPoint(pFxDriverGlobals)
FORCEINLINE VOID FxPerfTraceDpc(_In_ PVOID DriverCallback)
_In_opt_ PVOID _Out_ BOOLEAN * Stop
#define _Must_inspect_result_
#define UNREFERENCED_PARAMETER(P)
#define TRACE_LEVEL_ERROR
#define STATUS_INVALID_DEVICE_REQUEST
#define STATUS_INSUFFICIENT_RESOURCES
_Must_inspect_result_ _In_ WDFDEVICE _In_ PWDF_CHILD_LIST_CONFIG Config
_Must_inspect_result_ _In_ WDFDMAENABLER _In_ _In_opt_ PWDF_OBJECT_ATTRIBUTES Attributes
_In_ WDFDPC _In_ BOOLEAN Wait
@ WdfExecutionLevelPassive
#define STATUS_WDF_INCOMPATIBLE_EXECUTION_LEVEL
_Must_inspect_result_ _In_opt_ PWDF_OBJECT_ATTRIBUTES _Out_ WDFWAITLOCK * Lock
_In_ WDFTIMER _In_ LONGLONG DueTime
struct _EX_TIMER * PEX_TIMER
ActualNumberDriverObjects * sizeof(PDRIVER_OBJECT)) PDRIVER_OBJECT *DriverObjectList
_In_opt_ PVOID _In_opt_ PVOID SystemArgument1
_In_opt_ PVOID DeferredContext
_In_opt_ PVOID _In_opt_ PVOID _In_opt_ PVOID SystemArgument2
_Inout_opt_ PVOID Parameter
static void startTimer(void)