ドライバーまたはライブラリが静的ドライバー検証ツールでサポートされているかどうかの判定
静的ドライバー検証ツール (SDV) は、WDM、KMDF、NDIS、Storport のドライバーとライブラリを完全にサポートしており、他のドライバーのサポートは限られています。 ドライバーまたはライブラリがサポートされ、正しく構成されているかどうかを確認するには、このセクションで説明されている要件を一読してください。
ドライバーまたはライブラリの要件
ドライバーまたはライブラリが次のいずれかの条件を満たし、以下に示すクラス フレームワーク ライブラリにリンクされていない場合は、SDV 分析ツールでルールの完全なセットを実行できます。
- WDM ドライバーまたはライブラリがあります。
- WdfLdr.lib または WdfDriverEntry.lib にリンクするドライバーまたはライブラリがあります。
- NDIS.lib にリンクするドライバーまたはライブラリがあります。
- Storport.lib にリンクするドライバーまたはライブラリがあります。
上記の条件に該当するドライバーがある場合、SDV はドライバーを「汎用」と見なし、限られた一連のチェックを実行します。
さらに、SDV によって検証されるライブラリは、一般的な C または C++ ライブラリではなく、カーネル モード ドライバー ライブラリである必要があることに注意してください。
静的ドライバー検証ツールは、ドライバーまたはライブラリが複数のユーティリティ ライブラリにリンクしている場合でも、これらの条件を渡すドライバーまたはライブラリをサポートします。
さらに、分析を実行するには、SDV では次のことが必要です。
- ドライバーは、関数の役割の種類の宣言を使用して、少なくとも 1 つのエントリ ポイント を宣言しています。
- ドライバーは、(MSBuild を使用して Visual Studio で) 正しくビルドおよびリンクします。
- ドライバーまたはライブラリが KMDF を使用している場合、ドライバーまたはライブラリは KDMF バージョン 1.7 以降を使用します。
- ドライバーまたはライブラリが NDIS を使用する場合は、NDIS バージョン 6.0、6.1、6.20、6.30、または 6.40 を使用します。 このリストは変更される可能性があることに注意してください。
- ドライバーは、ドライバー モデル (WDM を使用した KMDF、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 | 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 |
ユーティリティ ライブラリ
静的ドライバー検証ツールは、ドライバーまたはライブラリがドライバーまたはライブラリの要件に準拠している場合、複数のユーティリティ ライブラリへのリンクを持つドライバーまたはライブラリをサポートします。
File Name |
---|
BufferOverflowK.lib |
hal.lib |
ntoskrnl.lib |
ntstrsafe.lib |
rtlver.lib |
sehupd.lib |
wdm.lib |
wmilib.lib |
wdmsec.lib |
静的ドライバー検証ツールと Microsoft クラス フレームワーク ライブラリ
クラス フレームワーク ライブラリの一覧でクラス フレームワーク ライブラリにリンクする必要がある WDM ドライバーを操作している場合、ドライバーは静的ドライバー検証ツールの条件に失敗します。 ただし、ある程度の静的検証を実行するために NullCheck rule ルールなど、引き続き使用できる一般的な規則がいくつかあります。