Ermitteln, ob der Static Driver Verifier Ihren Treiber oder Ihre Bibliothek unterstützt
Static Driver Verifier (SDV) unterstützt vollständig WDM-, KMDF-, NDIS- und Storport-Treiber und -Bibliotheken und bietet eingeschränkte Unterstützung für andere Treiber. Um festzustellen, ob Ihr Treiber oder Ihre Bibliothek ordnungsgemäß unterstützt und konfiguriert wird, lesen Sie die in diesem Abschnitt beschriebenen Anforderungen.
Treiber- oder Bibliotheksanforderungen
Sie können den vollständigen Satz von Regeln im SDV-Analysetool ausführen, wenn Ihr Treiber oder Ihre Bibliothek eine der folgenden Bedingungen erfüllt und keine Verknüpfung mit den unten aufgeführten Klassenframeworkbibliotheken enthält.
- Sie verfügen über einen WDM-Treiber oder eine WDM-Bibliothek.
- Sie verfügen über einen Treiber oder eine Bibliothek, der mit WdfLdr.lib oder WdfDriverEntry.lib verknüpft ist.
- Sie verfügen über einen Treiber oder eine Bibliothek, die mit NDIS.lib verknüpft ist.
- Sie verfügen über einen Treiber oder eine Bibliothek, der mit Storport.lib verknüpft ist.
Wenn Sie über einen Treiber verfügen, der nicht unter die oben genannten Bedingungen fällt, betrachtet SDV den Treiber als "generisch" und führt eine begrenzte Reihe von Überprüfungen aus.
Beachten Sie außerdem, dass bibliotheken, die von SDV überprüft werden, Kernelmodustreiberbibliotheken sein müssen, nicht allgemeine C- oder C++-Bibliotheken.
Static Driver Verifier unterstützt einen Treiber oder eine Bibliothek, der diese Bedingungen auch dann übergibt, wenn der Treiber oder die Bibliothek mit mehreren Hilfsprogrammbibliotheken verknüpft ist.
Darüber hinaus erfordert SDV folgendes, um die Analyse durchzuführen:
- Der Treiber hat mithilfe von Funktionsrollentypdeklarationen mindestens einen Einstiegspunkt deklariert.
- Der Treiber erstellt und verknüpft ordnungsgemäß (in Visual Studio mit MSBuild).
- Wenn der Treiber oder die Bibliothek KMDF verwendet, verwendet der Treiber oder die Bibliothek KDMF Version 1.7 oder höher.
- Wenn der Treiber oder die Bibliothek NDIS verwendet, wird NDIS Version 6.0, 6.1, 6.20, 6.30 oder 6.40 verwendet. Beachten Sie, dass diese Liste änderungen vorbehalten ist.
- Der Treiber kombiniert keine Treibermodelle (z. B. KMDF mit WDM oder KMDF und NDIS).
Es gibt weitere Faktoren, die die Qualität und Genauigkeit der statischen Analyseergebnisse beeinflussen. Zu diesen Faktoren zählen folgende:
- Verwendung von Hilfsbibliotheken, die nicht von SDV verarbeitet wurden.
- Größe des Treibers, insbesondere, wenn er über mehr als 100.000 Codezeilen verfügt.
- Verwendung sprachspezifischer Features, z. B. virtueller Funktionen und Zeigerarithmetik.
Visual Studio-Projektanforderungen
Um statische Treiberüberprüfung verwenden zu können, muss das Visual Studio-Projekt über die folgenden Einstellungen verfügen:
- UseDebugLibraries = false
- Platform = Win32 (x86) oder x64
Klassenframeworkbibliotheken
Wenn Sie über einen WDM-Treiber oder eine WDM-Bibliothek verfügen und SDV ausführen möchten, darf der Treiber oder die Bibliothek nicht mit einer der folgenden Klassenframeworkbibliotheken verknüpft werden.
1394bus.lib | fltMgr.lib | rdbss.lib | usbrpm.lib |
acpi.lib | FsDepends.lib | RNDISMP.lib | videoprt.lib |
armppm.lib | fwpkclnt.lib | RNDISMP6.lib | vwififlt.lib |
ataport.lib | hidclass.lib | RNDISMPX.lib | watchdog.lib |
ath_hwpci.lib | hidparse.lib | rpcxdr.lib | win32k.lib |
athhal.lib | hwpolicy.lib | Saha.lib | winhv.lib |
battc.lib | ipmidrv_hrmcust.lib | scsiport.lib | WMBBCLASS.lib |
BdaSup.lib | irt30.lib | smclib.lib | |
bdl.lib | irt30.lib | Soft1667FaultInjectionLimpetPool.lib | |
btampm.lib | ks.lib | SoftFCKernel.lib | |
bthport.lib | ksecdd.lib | SoftFCLimpetPool.lib | |
BTHPRINT.lib | ksmartcpu.lib | SoftSATAKernel.lib | |
classpnp.lib | mcd.lib | SoftStorageLimpetPool.lib | |
clfs.lib | mpio.lib | srvnet.lib | |
cng.lib | mrxsmb.lib | storvsp.lib | |
crashdmp.lib | msnfsflt.lib | stream.lib | |
csr_vfp_avdtp.lib | msrpc.lib | tape.lib | |
diskdump.lib | mup.lib | tbs.lib | |
drmk.lib | ndistapi.lib | tcpip.lib | |
dumpata.lib | netio.lib | tdi.lib | |
dumpfve.lib | ntasn1k.lib | termdd.lib | |
dxapi.lib | parallel.lib | USBCAMD.lib | |
dxg.lib | pciidex.lib | USBCAMD2.lib | |
dxgkrnl.lib | portcls.lib | usbd.lib | |
dxgmms1.lib | protogon.lib | usbport.lib |
Hilfsprogrammbibliotheken
Static Driver Verifier unterstützt einen Treiber oder eine Bibliothek mit Links zu mehreren Hilfsprogrammbibliotheken, wenn der Treiber oder die Bibliothek den Treiber- oder Bibliotheksanforderungen entspricht.
Dateiname |
---|
BufferOverflowK.lib |
hal.lib |
ntoskrnl.lib |
ntstrsafe.lib |
rtlver.lib |
sehupd.lib |
wdm.lib |
wmilib.lib |
wdmsec.lib |
Statische Treiberüberprüfung und Microsoft Class Framework-Bibliotheken
Wenn Sie mit WDM-Treibern arbeiten, die eine Verknüpfung mit einer Klassenframeworkbibliothek in der Liste Klassenframeworkbibliotheken herstellen müssen, schlägt der Treiber die Static Driver Verifier-Bedingung fehl. Es gibt jedoch einige generische Regeln, die weiterhin verwendet werden können, z. B. die NullCheck-Regel , um eine gewisse statische Überprüfung durchzuführen.