Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Om du vill göra det möjligt för SDV att analysera en KMDF-drivrutin måste du deklarera dina funktioner med hjälp av deklarationerna för funktionsrollstyp för KMDF. Funktionsrolltyperna definieras i Wdf.h och i andra KMDF-huvudfiler som ingår i Wdf.h. En lista över funktionsrolltyper och deras motsvarande funktioner för återanrop av händelser finns i KMDF-funktionsdeklarationer för statisk drivrutinsverifierare.
Varje händelseåteranropsfunktion i en KMDF-drivrutin måste deklareras genom att ange motsvarande rolltyp.
I följande kodexempel visas till exempel deklarationen av funktionsrolltyp för funktionen EvtDriverDeviceAdd callback. I det här exemplet kallas återanropsfunktionen myDriver_EvtDriverDeviceAdd. Funktionsrolltypen är EVT_WDF_DRIVER_DEVICE_ADD.
EVT_WDF_DRIVER_DEVICE_ADD myDriver_EvtDriverDeviceAdd;
Om en återanropsfunktion har en funktionsprototypdeklaration måste du ersätta funktionsprototypen med deklarationen för funktionsrolltyp.
Följande lista kommer från huvudfilen Fail_Driver6.h. De relaterade funktionerna deklareras i 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;
När du har deklarerat återanropsfunktionerna för drivrutinen med hjälp av rolltypsdeklarationer kan du skanna drivrutinen. Genom att skanna drivrutinen skapas filen Sdv-map.h, som du kan undersöka för att avgöra om startpunkterna har identifierats korrekt.
Köra kodanalys för drivrutiner för att verifiera funktionsdeklarationerna
Kör Kodanalys för drivrutiner för att avgöra om källkoden är förberedd. Kodanalys för drivrutiner söker efter deklarationer av funktionsrollstyp och kan hjälpa dig att identifiera funktionsdeklarationer som kan ha missats eller varna dig när parametrarna i funktionsdefinitionen inte matchar dem i funktionsrolltypen.
Funktionsparametrar och funktionsrolltyper
Som krävs i programmeringsspråket C måste de parametertyper som du använder i funktionsdefinitionen matcha parametertyperna för funktionsprototypen, eller i det här fallet funktionsrolltypen. SDV är beroende av funktionssignaturerna för analys och ignorerar funktioner vars signaturer inte matchar.
Du bör till exempel deklarera en EvtDriverDeviceAdd-rutin med hjälp av EVT_WDF_DRIVER_DEVICE_ADD funktionsrolltyp.
EVT_WDF_DRIVER_DEVICE_ADD myEvtDriverDeviceAdd;
När du implementerar funktionen myEvtDriverDeviceAdd måste parametertyperna matcha de som används av EVT_WDF_DRIVER_DEVICE_ADD, nämligen WDFDRIVER och PWDFDEVICE_INIT (se EvtDriverDeviceAdd-rutin för syntax).
NTSTATUS
 myEvtDriverDeviceAdd (
  WDFDRIVER Driver,
 PWDFDEVICE_INIT DeviceInit
 )
{
}