Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Средство проверки статических драйверов (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 для выполнения некоторого уровня статической проверки.