Freigeben über


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.