Sdílet prostřednictvím


Skenování ovladače

Kontrola ovladače pomocí možnosti příkazu /scan je volitelná. Pokud před ověřením ovladače neskenujete, SDV zkontroluje deklarace typu role funkce a při ověření ovladače vytvoří soubor Sdv-map.h.

Během této kontroly se SDV pokusí zjistit vstupní body ovladače, které potřebuje k ověření ovladače. Zaznamenává výsledky kontroly v souboru Sdv-map.h, který vytvoří v adresáři zdrojů ovladače.

Je však velmi důležité, abyste tento soubor zkontrolovali, a to buď po kroku kontroly, nebo po ověření, abyste zajistili, že SDV zjistil správné vstupní body. Pokud vstupní body chybí nebo jsou nesprávné, ověření nemusí být spolehlivé. Důležitější je, že pokud SDV nedokáže rozpoznat žádné vstupní body, nemůže ověřit ovladač.

Pro každý ovladač stačí skenovat pouze jednou. Poté SDV zachová soubor Sdv-map.h pro ovladač pro budoucí ověření.

Prozkoumání souboru Sdv-map.h

Po spuštění příkazu kontroly nebo ověření ovladače otevřete soubor Sdv-map.h a zkontrolujte soubor. Sdv-map.h je formátovaný textový soubor. Můžete si ho přečíst libovolný textový editor, například Poznámkový blok.

Porovnejte obsah souboru Sdv-map.h s deklarovanými typy rolí funkcí pro váš ovladač. Zkontrolujte obsah souboru Sdv-map.h a zjistěte, jestli byly správně identifikovány rutiny zpětného volání nebo odesílání ovladače.

Soubor Sdv-map.h není nutný k výpisu všech vstupních bodů v ovladači; pouze vstupní body pro hlavní kódy funkcí protokolu IRP nebo typy rolí funkcí, které se používají při analýze. Do souboru nepřidávejte žádné hlavní kódy funkcí IRP ani typy rolí funkcí.

Podrobné informace o souboru Sdv-map.h naleznete v tématu Sdv-map.h. Formát je popsán ve formátu souboru Sdv-map.h. Chyby, které se mohou objevit v souboru Sdv-map.h, jsou popsány v části Schválení souboru Sdv-map.h.

Následující příklad ukazuje obsah souboru Sdv-map.h z Fail_driver1, ukázkový ovladač WDM v adresáři tools\sdv\samples\fail_drivers\wdm.

//Approved=false
//DriverAddDevice
#define fun_AddDevice DriverAddDevice
//DriverEntry
#define fun_DriverEntry DriverEntry
//DriverUnload
#define fun_DriverUnload DriverUnload
//CompletionRoutine
#define fun_IO_COMPLETION_ROUTINE_1 CompletionRoutine
//DpcForIsrRoutine
#define fun_IO_DPC_ROUTINE_1 DpcForIsrRoutine
//DispatchCreate
#define fun_IRP_MJ_CREATE DispatchCreate
//DispatchPnp
#define fun_IRP_MJ_PNP DispatchPnp
//DispatchPower
#define fun_IRP_MJ_POWER DispatchPower
//DispatchRead
#define fun_IRP_MJ_READ DispatchRead
//DispatchSystemControl
#define fun_IRP_MJ_SYSTEM_CONTROL DispatchSystemControl
//InterruptServiceRoutine
#define fun_KSERVICE_ROUTINE_1 InterruptServiceRoutine

Oprava souboru Sdv-map.h

Před ověřením ovladače opravte všechny chyby v souboru Sdv-map.h. SDV ověří ovladač, i když je soubor Sdv-map.h nesprávný nebo neschváliný, ale výsledky ověření nemusí být spolehlivé. Pokud například nedeklarujete rutinu dispečera nebo zpětného volání ovladače pomocí příslušného typového funkčního role, rutina ovladače se nebude zobrazovat v souboru Sdv-map.h. V důsledku toho můžete přehlédnout chyby ve svém kódu, protože SDV považuje pravidla, která používají funkční role, za nepoužitelné, i když jste tato pravidla zadali jako součást ověření.

Pokud chcete opravit soubor Sdv-map.h, ujistěte se, že rutiny dispečera nebo zpětného volání ovladače jsou deklarovány pomocí příslušných typů rolí funkce. Znovu zkontrolujte ovladač a ověřte, že se zobrazí v souboru Sdv-map.h.

Schválení souboru Sdv-map.h

Po určení správnosti souboru Sdv-map.h můžete soubor schválit. Pokud jste v souboru neprošli žádné změny, nemusíte ho schvalovat.

SDV ověří ovladač, i když soubor Sdv-map.h není schválen.

Pokud chcete schválit soubor Sdv-map.h, změňte na prvním řádku souboru:

//Approved=false

na:

//Approved=true

Soubor Sdv-map.h musíte schválit jenom jednou pro každý ovladač. Následně SDV zachová schválený soubor Sdv-map.h pro ovladač pro budoucí ověření. Pokud chcete, aby SDV znovu kontroloval deklarace typu role funkce, odstraňte soubor.

Následující příklad ukazuje schválený soubor Sdv-map.h pro ukázkový ovladač KMDF Fail_Driver1. SDV používá soubor Sdv-map.h k mapování deklarovaných funkcí zpětného volání ovladače s typy rolí funkcí, které SDV potřebuje k ověření.

//Approved=true
//DriverEntry
#define fun_DriverEntry DriverEntry
//EvtDriverDeviceAdd
#define fun_WDF_DRIVER_DEVICE_ADD EvtDriverDeviceAdd
//EvtIoDeviceControl
#define fun_WDF_IO_QUEUE_IO_DEVICE_CONTROL EvtIoDeviceControl
//EvtIoInternalDeviceControl
#define fun_WDF_IO_QUEUE_IO_INTERNAL_DEVICE_CONTROL EvtIoInternalDeviceControl
//EvtIoRead
#define fun_WDF_IO_QUEUE_IO_READ EvtIoRead
//EvtRequestCancel
#define fun_WDF_REQUEST_CANCEL_1 EvtRequestCancel