126{
131
134 isPassiveTimer =
FALSE;
135
137
138
141 }
142
145 }
146
147
149
150
151
152
153
154
155
156
157
158
159
160
161
162#if (FX_CORE_MODE == FX_CORE_KERNEL_MODE)
163
164
165
166
167
168 {
170 }
171#else
173#endif
174
178 "Failed to initialize timer %!STATUS!",
status);
180 }
181
182
183
184
185
186
187
188
189
190
191
192
194
198 }
199
201 isPassiveTimer =
TRUE;
202 }
203
204
205
206
208 ParentObject,
209 pCallbacks,
210 Config->AutomaticSerialization,
211 isPassiveTimer,
214 );
215
218
219
220
221
222
223
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!",
230 }
231
233 }
234
235
236
237
238 if (isPassiveTimer) {
242 );
245 "Could not allocate workitem: %!STATUS!",
status);
247 }
248 }
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279 ParentObject->ADDREF(this);
280
281
282
283
285
286
287
288
289
291
294 }
295
297}
static FxDeviceBase * _SearchForDevice(__in FxObject *Object, __out_opt IFxHasCallbacks **Callbacks)
MdDeviceObject __inline GetDeviceObject(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
_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)
static MdDeferredRoutineType _FxTimerDpcThunk
BOOLEAN m_UseHighResolutionTimer
CHECK_RETURN_IF_USER_MODE __inline NTSTATUS Initialize(__in_opt PVOID TimerContext, __in MdDeferredRoutine TimerCallback, __in LONG Period)
PFX_DRIVER_GLOBALS pFxDriverGlobals
#define STATUS_INVALID_DEVICE_REQUEST
@ WdfExecutionLevelPassive
#define STATUS_WDF_INCOMPATIBLE_EXECUTION_LEVEL