Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Pokud chcete SDV povolit analýzu ovladače KMDF, musíte deklarovat funkce pomocí deklarací typů rolí funkcí pro KMDF. Typy rolí funkce jsou definovány ve Wdf.h a v jiných souborech hlaviček KMDF, které jsou součástí Wdf.h. Seznam typů rolí funkcí a jejich odpovídajících funkcí zpětného volání událostí naleznete v tématu Deklarace funkcí Statického ověřovače ovladačů KMDF.
Každá funkce zpětného volání události v ovladači KMDF musí být deklarována zadáním odpovídajícího typu role.
Například následující příklad kódu ukazuje deklaraci typu role funkce pro funkci Zpětné volání EvtDriverDeviceAdd . V tomto příkladu se funkce zpětného volání nazývá myDriver_EvtDriverDeviceAdd. Typ role funkce je EVT_WDF_DRIVER_DEVICE_ADD.
EVT_WDF_DRIVER_DEVICE_ADD myDriver_EvtDriverDeviceAdd;
Pokud má funkce zpětného volání deklaraci prototypu funkce, je nutné nahradit prototyp funkce deklarací typu role funkce.
Následující výpis pochází ze souboru hlaviček Fail_Driver6.h. Související funkce jsou deklarovány v FailDriver6.c.
/*++
Copyright (C) Microsoft. All rights reserved.
Module Name:
fail_driver6.h
Environment:
Kernel mode
--*/
#include <NTDDK.h>
#include <wdf.h>
#include "fail_library6.h"
DRIVER_INITIALIZE DriverEntry;
EVT_WDF_DRIVER_DEVICE_ADD EvtDriverDeviceAdd;
EVT_WDF_IO_QUEUE_IO_READ EvtIoRead;
EVT_WDF_IO_QUEUE_IO_WRITE EvtIoWrite;
EVT_WDF_IO_QUEUE_IO_DEVICE_CONTROL EvtIoDeviceControl;
EVT_WDF_DEVICE_CONTEXT_CLEANUP DeviceContextCleanUp;
EVT_WDF_DEVICE_CONTEXT_DESTROY DeviceContextDestroy;
EVT_WDF_IO_QUEUE_CONTEXT_CLEANUP_CALLBACK QueueCleanup;
EVT_WDF_IO_QUEUE_CONTEXT_DESTROY_CALLBACK QueueDestroy;
EVT_WDF_FILE_CONTEXT_CLEANUP_CALLBACK FileContextCleanup;
EVT_WDF_FILE_CONTEXT_DESTROY_CALLBACK FileContextDestroy;
Jakmile deklarujete funkce zpětného volání ovladače pomocí deklarací typu role, můžete ovladač zkontrolovat. Skenování ovladače vytvoří soubor Sdv-map.h, který můžete prozkoumat a zjistit, jestli byly vstupní body správně identifikovány.
Spuštění analýzy kódu pro ovladače k ověření deklarací funkcí
Pokud chcete zjistit, jestli je zdrojový kód připravený, spusťte analýzu kódu pro ovladače. Analýza kódu pro ovladače kontroluje deklarace typu role funkce a může pomoct identifikovat deklarace funkcí, které mohly být zmeškané, nebo vás varovat, když parametry definice funkce neodpovídají parametrům v typu role funkce.
Parametry funkce a typy rolí funkcí
Podle potřeby v programovacím jazyce C musí typy parametrů, které použijete v definici funkce, odpovídat typům parametrů prototypu funkce, nebo v tomto případě typu role funkce. SDV závisí na podpisech funkce pro analýzu a ignoruje funkce, jejichž podpisy se neshodují.
Měli byste například deklarovat rutinu EvtDriverDeviceAdd pomocí typu role funkce EVT_WDF_DRIVER_DEVICE_ADD.
EVT_WDF_DRIVER_DEVICE_ADD myEvtDriverDeviceAdd;
Při implementaci funkce myEvtDriverDeviceAdd musí typy parametrů odpovídat typům parametrů používaným EVT_WDF_DRIVER_DEVICE_ADD, konkrétně WDFDRIVER a PWDFDEVICE_INIT (viz rutina EvtDriverDeviceAdd pro syntaxi).
NTSTATUS
myEvtDriverDeviceAdd (
WDFDRIVER Driver,
PWDFDEVICE_INIT DeviceInit
)
{
}