Bagikan melalui


Mendeklarasikan Fungsi dengan Menggunakan Jenis Peran Fungsi untuk Driver KMDF

Untuk mengaktifkan SDV menganalisis driver KMDF, Anda harus mendeklarasikan fungsi Anda menggunakan deklarasi jenis peran fungsi untuk KMDF. Jenis peran fungsi didefinisikan dalam Wdf.h dan dalam file header KMDF lainnya yang disertakan dalam Wdf.h. Untuk daftar jenis peran fungsi dan fungsi panggilan balik peristiwa yang sesuai, lihat Deklarasi Fungsi KMDF Pemverifikasi Driver Statis.

Setiap fungsi panggilan balik peristiwa dalam driver KMDF harus dideklarasikan dengan menentukan jenis peran yang sesuai.

Misalnya, contoh kode berikut menunjukkan deklarasi jenis peran fungsi untuk fungsi panggilan balik EvtDriverDeviceAdd . Dalam contoh ini, fungsi panggilan balik disebut myDriver_EvtDriverDeviceAdd. Jenis peran fungsi EVT_WDF_DRIVER_DEVICE_ADD.

EVT_WDF_DRIVER_DEVICE_ADD myDriver_EvtDriverDeviceAdd;

Jika fungsi panggilan balik memiliki deklarasi prototipe fungsi, Anda harus mengganti prototipe fungsi dengan deklarasi jenis peran fungsi.

Daftar berikut berasal dari file header Fail_Driver6.h. Fungsi terkait dideklarasikan dalam 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;

Setelah Anda mendeklarasikan fungsi panggilan balik driver Anda menggunakan deklarasi jenis peran, Anda dapat memindai driver. Memindai driver menghasilkan file Sdv-map.h, yang dapat Anda periksa untuk menentukan apakah titik masuk diidentifikasi dengan benar.

Menjalankan Analisis Kode untuk Driver untuk memverifikasi deklarasi fungsi

Untuk membantu Anda menentukan apakah kode sumber disiapkan, jalankan Analisis Kode untuk Driver. Analisis Kode untuk Driver memeriksa deklarasi jenis peran fungsi dan dapat membantu mengidentifikasi deklarasi fungsi yang mungkin terlewatkan atau memperingatkan Anda ketika parameter definisi fungsi tidak cocok dengan yang ada di jenis peran fungsi.

Parameter Fungsi dan Jenis Peran Fungsi

Seperti yang diperlukan dalam bahasa pemrograman C, jenis parameter yang Anda gunakan dalam definisi fungsi harus cocok dengan jenis parameter prototipe fungsi, atau dalam hal ini, jenis peran fungsi. SDV bergantung pada tanda tangan fungsi untuk analisis dan mengabaikan fungsi yang tanda tangannya tidak cocok.

Misalnya, Anda harus mendeklarasikan rutinitas EvtDriverDeviceAdd menggunakan jenis peran fungsi EVT_WDF_DRIVER_DEVICE_ADD.

EVT_WDF_DRIVER_DEVICE_ADD myEvtDriverDeviceAdd;

Saat Anda mengimplementasikan fungsi myEvtDriverDeviceAdd, jenis parameter harus cocok dengan yang digunakan oleh EVT_WDF_DRIVER_DEVICE_ADD, yaitu, WDFDRIVER dan PWDFDEVICE_INIT (lihat rutinitas EvtDriverDeviceAdd untuk sintaks).

NTSTATUS
 myEvtDriverDeviceAdd (
  WDFDRIVER Driver,
 PWDFDEVICE_INIT DeviceInit
 )
{
}