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

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

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

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

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

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

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

Static Driver Verifier поддерживает драйвер или библиотеку, которая выполняет эти условия, даже если драйвер или библиотека ссылается на несколько служебных библиотек.

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

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

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

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

Требования к проекту 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 termd.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, которые должны ссылаться на библиотеку платформы классов в списке библиотек платформы классов , драйвер завершится ошибкой условия статического средства проверки драйверов. Однако существуют некоторые универсальные правила, которые по-прежнему можно использовать, например правило NullCheck для выполнения некоторого уровня статической проверки.