245{
247
249
251
254
257 ": NULL parameter -- %s\n",
260 (
Info->FuncTable ==
NULL) ?
"PWDF_BIND_INFO->FuncTable" :
261 "unknown" ));
262 goto Done;
263 }
264
266
268
269
270
271
272
274
277 ": version mismatch detected in function table count: client"
278 "has 0x%x, library has 0x%x\n",
280 goto Done;
281 }
282
284
285 switch (
Info->FuncCount) {
286
289 break;
290
291 default:
293 ": Function table count 0x%x doesn't match any previously "
294 "released framework version table size\n",
296 goto Done;
297 }
298 }
299 else {
300
301
302
303
304
305
306
307
308
309
310
311
312
314 __Print((
"Framework function table size (%d) doesn't match "
315 "with client (%d). Rebuild the client driver.",
317
319 goto Done;
320 }
321 }
322
323
324
325
327
332
333
334
335
336
341
342
343
344
345 if (isFunctinTableHookingOn ==
FALSE && isPerformanceAnalysisOn ==
FALSE) {
346
347
348
349
350
351
356 }
357 else {
358
359
360
361
363 }
364 }
365 else {
367 ": Enhanced Verification is ON \n"));
368
369 if (Microsoft_Windows_DriverFrameworks_UserMode_PerformanceHandle ==
NULL)
370 {
371 EventRegisterMicrosoft_Windows_DriverFrameworks_UserMode_Performance();
372 }
373
374
375
376
377
378
379
382 &VfWdfVersion.Functions,
384 }
385 else {
386
387
388
389
391 }
392 }
393
395
397 ": WdfFunctions %p\n",
Info->FuncTable));
398 }
399
400Done:
402 ": exit: status %X\n",
status));
403
406 TRAPMSG("Version mismatch detected in function table count. Recompile"
407 " driver with correct headers"));
408 }
409
411}
FX_VERIFY(INTERNAL, CHECK_NOT_NULL(LoaderInterface->pIWudfHost))
PFX_DRIVER_GLOBALS fxDriverGlobals
__inline PFX_DRIVER_GLOBALS GetFxDriverGlobals(__in PWDF_DRIVER_GLOBALS DriverGlobals)
#define WDF_LIBRARY_REGISTER_CLIENT
_Must_inspect_result_ PWDF_DRIVER_GLOBALS FxAllocateDriverGlobals(VOID)
__inline BOOLEAN IsFxPerformanceAnalysis(__in PFX_DRIVER_GLOBALS FxDriverGlobals)
__inline BOOLEAN IsFxVerifierFunctionTableHooking(__in PFX_DRIVER_GLOBALS FxDriverGlobals)
VOID GetEnhancedVerifierOptions(__in PCLIENT_INFO ClientInfo, __out PULONG Options)
ULONG FxEnhancedVerifierOptions
#define RtlCopyMemory(Destination, Source, Length)
#define STATUS_INVALID_PARAMETER
@ WdfFunctionTableNumEntries_V2_0
@ WdfFunctionTableNumEntries_V2_15
_Must_inspect_result_ _In_ WDFCHILDLIST _In_ PWDF_CHILD_LIST_ITERATOR _Out_ WDFDEVICE _Inout_opt_ PWDF_CHILD_RETRIEVE_INFO Info
PWDF_DRIVER_GLOBALS WdfDriverGlobals
@ WdfFunctionTableNumEntries