Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Aby umożliwić SDV analizowanie sterownika KMDF, należy zadeklarować funkcje przy użyciu deklaracji typów ról funkcji dla KMDF. Typy ról funkcji są definiowane w plikach Wdf.h i innych plikach nagłówków KMDF, które są zawarte w pliku Wdf.h. Aby zapoznać się z listą typów ról funkcji oraz odpowiadającymi im funkcjami wywołania zwrotnego zdarzeń, zobacz Statyczne deklaracje funkcji KMDF weryfikatora sterowników.
Każda funkcja wywołania zwrotnego zdarzeń w sterowniku KMDF musi być zadeklarowana przez określenie odpowiedniego typu roli.
Na przykład poniższy przykład kodu pokazuje zadeklarowanie typu roli dla funkcji wywołania zwrotnego EvtDriverDeviceAdd. W tym przykładzie funkcja wywołania zwrotnego nosi nazwę myDriver_EvtDriverDeviceAdd. Typ roli funkcji jest EVT_WDF_DRIVER_DEVICE_ADD.
EVT_WDF_DRIVER_DEVICE_ADD myDriver_EvtDriverDeviceAdd;
Jeśli funkcja wywołania zwrotnego ma deklarację prototypu funkcji, należy zastąpić prototyp funkcji deklaracją typu roli funkcji.
Poniższa lista pochodzi z pliku nagłówka Fail_Driver6.h. Powiązane funkcje są deklarowane w pliku 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;
Po zadeklarowaniu funkcji wywołań zwrotnych sterownika za pomocą deklaracji typów ról, można zeskanować sterownik. Skanowanie sterownika generuje plik Sdv-map.h, który można sprawdzić, aby ustalić, czy punkty wejścia zostały prawidłowo zidentyfikowane.
Uruchamianie analizy kodu dla sterowników w celu zweryfikowania deklaracji funkcji
Aby ułatwić określenie, czy kod źródłowy jest przygotowany, uruchom polecenie Analiza kodu dla sterowników. Funkcja Analiza kodu dla sterowników sprawdza deklaracje typów ról funkcji i może pomóc zidentyfikować deklaracje funkcji, które mogły zostać pominięte lub ostrzegać, gdy parametry definicji funkcji nie pasują do tych w typie roli funkcji.
Parametry funkcji i typy ról funkcji
Zgodnie z wymaganiami w języku programowania C typy parametrów używane w definicji funkcji muszą być zgodne z typami parametrów prototypu funkcji lub w tym przypadku typem roli funkcji. SdV zależy od sygnatur funkcji do analizy i ignoruje funkcje, których podpisy nie są zgodne.
Na przykład należy zadeklarować procedurę EvtDriverDeviceAdd przy użyciu typu roli funkcji EVT_WDF_DRIVER_DEVICE_ADD.
EVT_WDF_DRIVER_DEVICE_ADD myEvtDriverDeviceAdd;
Podczas implementowania funkcji myEvtDriverDeviceAdd typy parametrów muszą być zgodne z typami używanymi przez EVT_WDF_DRIVER_DEVICE_ADD, a mianowicie WDFDRIVER i PWDFDEVICE_INIT (zobacz EvtDriverDeviceAdd procedury składni).
NTSTATUS
myEvtDriverDeviceAdd (
WDFDRIVER Driver,
PWDFDEVICE_INIT DeviceInit
)
{
}