Определение того, поддерживает ли статический драйвер или библиотеку
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 для выполнения некоторого уровня статической проверки.