Определение того, поддерживает ли средство проверки статических драйверов драйвер или библиотеку

Средство проверки статических драйверов (SDV) полностью поддерживает WDM, KMDF, NDIS и библиотеки Storport и имеет ограниченную поддержку для других драйверов. Чтобы определить, поддерживаются ли и правильно ли настроены ваш драйвер или библиотека, ознакомьтесь с требованиями, описанными в этом разделе.

Требования к драйверу или библиотеке

Вы можете запустить полный набор правил в средстве анализа SDV, если драйвер или библиотека соответствуют одному из следующих условий и не связывается ни с одной из библиотек платформ классов, перечисленных ниже.

  • У вас есть драйвер или библиотека WDM.
  • У вас есть драйвер или библиотека, которая ссылается на WdfLdr.lib или WdfDriverEntry.lib.
  • У вас есть драйвер или библиотека, которая ссылается на NDIS.lib.
  • У вас есть драйвер или библиотека, которая ссылается на Storport.lib.

Если у вас есть драйвер, который выходит за пределы указанных выше условий, SDV рассмотрит драйвер как "универсальный" и выполнит ограниченный набор проверок.

Кроме того, обратите внимание, что библиотеки, проверенные SDV, должны быть библиотеками драйверов в режиме ядра, а не общими библиотеками C или C++.

Средство проверки статических драйверов поддерживает драйвер или библиотеку, которая передает эти условия, даже если драйвер или библиотека связывается с несколькими библиотеками служебной программы.

Кроме того, для выполнения анализа sdV требуется:

  • Драйвер объявил по крайней мере одну точку входа, используя объявления типа роли функции Using Function Role Type Declarations.
  • Драйвер правильно собирается и линкуется (в Visual Studio с помощью MSBuild).
  • Если драйвер или библиотека используют KMDF, драйвер или библиотека использует KDMF версии 1.7 или более поздней.
  • Если драйвер или библиотека используют NDIS, он использует NDIS версии 6.0, 6.1, 6.20, 6.30 или 6.40. Обратите внимание, что этот список подлежит изменению.
  • Драйвер не объединяет модели драйверов (например, KMDF с WDM или KMDF и NDIS).

Существуют и другие факторы, влияющие на качество и точность результатов статического анализа. К этим факторам относится следующее:

  • Использование служебных библиотек, которые не были обработаны SDV.
  • Размер драйвера, особенно если он имеет более 100K строк кода.
  • Использование функций, относящихся к языку, таких как виртуальные функции и арифметика указателя.

Требования к проекту Visual Studio

Чтобы использовать средство проверки статических драйверов, проект Visual Studio должен иметь следующие параметры:

  • UseDebugLibraries = false
  • Platform = Win32 (x86) или x64

Библиотеки платформы классов

Если у вас есть драйвер или библиотека WDM и требуется запустить SDV, драйвер или библиотека не должны ссылаться на одну из следующих библиотек платформ класса.

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

Библиотеки служебных программ

Средство проверки статических драйверов поддерживает драйвер или библиотеку с ссылками на несколько служебных библиотек, если драйвер или библиотека соответствуют требованиям драйвера или библиотеки.

Имя файла
BufferOverflowK.lib
hal.lib
ntoskrnl.lib
ntstrsafe.lib
rtlver.lib
sehupd.lib
wdm.lib
wmilib.lib
wdmsec.lib

Средства проверки статических драйверов и библиотеки Microsoft Class Framework

Если вы работаете с драйверами WDM, которые должны связаться с библиотекой фреймворков классов в списке Class framework libraries, драйвер не пройдет условие средства проверки статических драйверов. Однако существуют некоторые универсальные правила, которые по-прежнему можно использовать, например правило NullCheck для выполнения некоторого уровня статической проверки.