ドライバーまたはライブラリが静的ドライバー検証ツールでサポートされているかどうかの判定

静的ドライバー検証ツール (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 ルールなど、引き続き使用できる一般的な規則がいくつかあります。