Jegyzet
Az oldalhoz való hozzáférés engedélyezést igényel. Próbálhatod be jelentkezni vagy könyvtárat váltani.
Az oldalhoz való hozzáférés engedélyezést igényel. Megpróbálhatod a könyvtár váltását.
Ahhoz, hogy az SDV elemezhessen egy KMDF-illesztőt, deklarálnia kell a függvényeket a KMDF függvényszerepkör-típus deklarációival. A függvényszerepkör-típusok a Wdf.h-ban és a Wdf.h-ban található egyéb KMDF-fejlécfájlokban vannak definiálva. A függvényszerepkör-típusok és a hozzájuk tartozó eseményvisszahívási függvények listáját a Static Driver Verifier KMDF-függvénydeklarációkcímű témakörben találja.
A KMDF-illesztőprogram minden eseményvisszahívási függvényét deklarálni kell a megfelelő szerepkörtípus megadásával.
Az alábbi példakód például a EvtDriverDeviceAdd visszahívási függvény függvényszerepkör-deklarációját mutatja be. Ebben a példában a visszahívási függvény neve myDriver_EvtDriverDeviceAdd. A függvényszerepkör típusa EVT_WDF_DRIVER_DEVICE_ADD.
EVT_WDF_DRIVER_DEVICE_ADD myDriver_EvtDriverDeviceAdd;
Ha a visszahívási függvény rendelkezik függvény-prototípus deklarációval, a függvény prototípusát le kell cserélnie a függvényszerepkör-típus deklarációra.
Az alábbi lista a Fail_Driver6.h fejlécfájlból származik. A kapcsolódó függvények deklarálva vannak a FailDriver6.c fájlban.
/*++
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;
Miután deklarálta az illesztőprogram visszahívási függvényeit szerepkörtípus-deklarációkkal, át is vizsgálhatja az illesztővezetőt . Az illesztőprogram vizsgálata létrehozza az Sdv-map.h fájlt, amelyet megvizsgálva megállapíthatja, hogy a belépési pontok helyesen lettek-e azonosítva.
Kódelemzés futtatása illesztőprogramokhoz a függvénydeklarációk ellenőrzéséhez
Annak megállapításához, hogy a forráskód készen áll-e, futtassa az illesztőprogram kódelemzéseparancsot. Az illesztőprogramok kódelemzése ellenőrzi a függvényszerepkör-deklarációkat, és segíthet azonosítani azokat a függvénydeklarációkat, amelyek esetleg kimaradtak, vagy figyelmeztetik, ha a függvénydefiníció paraméterei nem egyeznek a függvényszerepkör típusában szereplőkkel.
függvényparaméterek és függvényszerepkör-típusok
A C programozási nyelvben szükség szerint a függvénydefinícióban használt paramétertípusoknak meg kell egyezniük a függvény prototípusának paramétertípusával, vagy ebben az esetben a függvényszerepkör típusával. Az SDV az elemzéshez használt függvény-aláírásoktól függ, és figyelmen kívül hagyja azokat a függvényeket, amelyek aláírásai nem egyeznek.
Például deklarálnia kell egy EvtDriverDeviceAdd rutint a EVT_WDF_DRIVER_DEVICE_ADD függvényszerepkör típusával.
EVT_WDF_DRIVER_DEVICE_ADD myEvtDriverDeviceAdd;
A myEvtDriverDeviceAdd függvény implementálásakor a paramétertípusoknak meg kell egyeznie a EVT_WDF_DRIVER_DEVICE_ADD által használtakkal, nevezetesen a WDFDRIVER és a PWDFDEVICE_INIT (a szintaxishoz lásd EvtDriverDeviceAdd rutint).
NTSTATUS
myEvtDriverDeviceAdd (
WDFDRIVER Driver,
PWDFDEVICE_INIT DeviceInit
)
{
}