Megosztás:


Az illesztőprogram vizsgálata

Az illesztőprogram /scan paranccsal történő beolvasása nem kötelező. Ha az illesztőprogram ellenőrzése előtt nem végez vizsgálatot, az SDV megvizsgálja a függvényszerepkör-típus deklarációit, és létrehoz egy Sdv-map.h fájlt az illesztőprogram ellenőrzésekor.

A vizsgálat során az SDV megpróbálja észlelni az illesztőprogram belépési pontjait, amelyekre az illesztőprogram ellenőrzéséhez szüksége van. A vizsgálat eredményeit az Sdv-map.h fájlban rögzíti, amelyet az illesztőprogram forráskönyvtárában hoz létre.

Nagyon fontos azonban, hogy áttekintse ezt a fájlt, akár a vizsgálati lépés után, akár az ellenőrzés után, annak érdekében, hogy az SDV észlelje a megfelelő belépési pontokat. Ha a belépési pontok hiányoznak vagy hibásak, előfordulhat, hogy az ellenőrzés nem megbízható. Ami még fontosabb, ha az SDV nem észlel belépési pontokat, nem tudja ellenőrizni az illesztőprogramot.

Az egyes illesztőprogramok esetében csak egyszer kell beolvasni. Ezt követően az SDV megőrzi az illesztőprogram Sdv-map.h fájlját a jövőbeli ellenőrzésekhez.

Az Sdv-map.h fájl vizsgálata

A vizsgálati parancs futtatása vagy az illesztőprogram ellenőrzése után nyissa meg az Sdv-map.h fájlt, és vizsgálja meg a fájlt. Az Sdv-map.h egy formázott szövegfájl. Bármilyen szövegszerkesztőben, például a Jegyzettömbben is elolvashatja.

Hasonlítsa össze az Sdv-map.h fájl tartalmát az illesztőprogram deklarált függvényszerepkör-típusaival. Vizsgálja meg az Sdv-map.h fájl tartalmát, és ellenőrizze, hogy az illesztőprogram visszahívási vagy küldési rutinja helyesen lett-e azonosítva.

Az Sdv-map.h fájl nem szükséges az illesztőprogram összes belépési pontjának listázásához; csak az elemzésben használt IRP-főfüggvénykódok vagy függvényszerepkör-típusok belépési pontjai. Ne adjon hozzá IRP-főfüggvénykódokat vagy függvényszerepkör-típusokat a fájlhoz.

Az Sdv-map.h fájllal kapcsolatos részletes információkért lásd: Sdv-map.h. A formátumot az Sdv-map.h fájl formátuma ismerteti. Az Sdv-map.h fájlban megjelenő hibákat az Sdv-map.h fájl jóváhagyása ismerteti.

Az alábbi példa a Sdv-map.h fájl tartalmát mutatja be a tools/sdv/samples/fail_drivers/wdm könyvtárban található Fail_driver1 fájlban, amely egy WDM-mintaillesztő.

//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

Az Sdv-map.h fájl javítása

Az illesztőprogram ellenőrzése előtt javítsa ki az Sdv-map.h fájl hibáit. Az SDV akkor is ellenőrzi az illesztőprogramot, ha az Sdv-map.h fájl helytelen vagy nem jóváhagyott, de az ellenőrzés eredményei nem megbízhatóak. Ha például nem deklarálja az illesztőprogram kézbesítési vagy visszahívási rutinját a megfelelő függvényszerepkör-típus használatával, az illesztőprogram-rutin nem jelenik meg az Sdv-map.h fájlban. Következésképpen kihagyhatja a kód hibáinak megtalálását, mert az SDV a függvényszerepkör-típusokat használó szabályokat nem alkalmazhatónak tekinti, még akkor is, ha ezeket a szabályokat az ellenőrzés részeként adta meg.

Az Sdv-map.h fájl javításához győződjön meg arról, hogy az illesztőprogram küldési vagy visszahívási rutinja a megfelelő függvényszerepkör-típusok használatával van deklarálva. Ezután vizsgálja meg újra az illesztőprogramot, és ellenőrizze, hogy megjelennek-e az Sdv-map.h fájlban.

Az Sdv-map.h fájl jóváhagyása

Az Sdv-map.h fájl helyességének megállapítása után jóváhagyhatja a fájlt. Ha nem módosította a fájlt, nem kell jóváhagynia.

Az SDV akkor is ellenőrzi az illesztőprogramot, ha az Sdv-map.h fájl nincs jóváhagyva.

Az Sdv-map.h fájl jóváhagyásához a fájl első sorában módosítsa a következőt:

//Approved=false

címzett:

//Approved=true

Az Sdv-map.h fájlt csak egyszer kell jóváhagynia az egyes illesztőprogramokhoz. Ezt követően az SDV megőrzi az illesztőprogram jóváhagyott Sdv-map.h fájlját a jövőbeli ellenőrzésekhez. Ha azt szeretné, hogy az SDV újra beolvassa a forráskódot a függvényszerepkör-típus deklarációihoz, egyszerűen törölje a fájlt.

Az alábbi példa a KMDF-mintaillesztő jóváhagyott Sdv-map.h fájlját mutatja be, Fail_Driver1. Az SDV az Sdv-map.h fájl használatával megfelelteti az illesztőprogram deklarált visszahívási függvényeit az ellenőrzéshez szükséges SDV-szerepkörtípusokhoz.

//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