静的ツールのロゴ テスト
このテストでは、ドライバーの信頼性とセキュリティを向上させるために設計された静的分析を実行します。 認定のために静的ツール ロゴ テストに合格するには、カーネル モード ドライバーの提出が必要です。 Windows ハードウェア互換性プログラムに準拠するには、署名または認定のために Microsoft に提出するためのカーネル モード ドライバーの静的分析に CodeQL を使用する必要があります。
テストの詳細
詳細 |
|
プラットフォーム |
|
サポートされているリリース |
|
予想される実行時間 (分) | 5 |
カテゴリ | 開発 |
タイムアウト (分) | 0 |
再起動が必要 | false |
特別な構成が必要 | false |
Type | automatic |
Windows クライアント認定の静的分析
CodeQLは、ソフトウェアをセキュリティで保護するための強力なスタティック分析テクノロジです。 大量のセキュリティクエリと堅牢なプラットフォームを組み合わせて使用することで、サードパーティのドライバーコードをセキュリティで保護するための貴重なツールとなります。
Windows エコシステムのセキュリティ水準を上げるべく、すべてのドライバーの提出でドライバーのソース コードに CodeQL エンジンを使用し 、「要修正」と見なされるクエリを修正することを定めた Windows ハードウェア互換性プログラムに Microsoft はこの要件を追加しました。
この要件は静的ツール ロゴ テストによって適用されます。
CodeQL をダウンロードしてドライバーのソースコードに実行する方法の詳細について は、「CodeQL」と「静的ツールのロゴテスト 」を参照してください。 このページに従って、下記の 「CodeQL および DVL 生成」 セクションを参照すると、静的なツールのロゴテストで、静的なツールロゴテストの一部として、ドライバーソースコードで CodeQLを実行した結果が正しく使用されるようになります。
CodeQL と静的ツール ロゴ テストはどのような種類のドライバーに適用されますか?
現在、静的ツール ロゴ テストでは、CodeQL を実行し、グラフィックス ドライバーを除くすべてのカーネル モード ドライバーに対して「Must-Fix」クエリ セットに合格する必要があります。 現時点では必須ではありませんが、グラフィックス ドライバーで CodeQL を実行することを強くお勧めします。 一部のクエリでは、ユーザー モード コンポーネントの有用な欠陥が見つかる場合もあります。
将来的には、グラフィックス ドライバー、ユーザー モード ドライバーとドライバー コンポーネント、およびその他のドライバー パッケージ コンポーネントの結果を要求するようにテストとそのクエリを拡張する予定です。 グラフィックス ドライバーまたはユーザー モード ドライバーで CodeQL を実行している予期しない動作や擬陽性が発生した場合は、Windows-Driver-Developer-Supplemental-Tools リポジトリで問題を報告してください。
グラフィックス ドライバーでテストを実行している場合、テストは HLK に設定されますが、既定で合格します。 ユーザー モード コンポーネントのみで実行している場合、またはコード (つまり、inf 拡張子) なしでドライバー パッケージを送信している場合、テストが入力されない可能性があります。 カーネル モード コンポーネントを送信していて、テストが予期せず設定されない場合は、ドライバーがテスト署名されていることを確認します (下記の注を参照)。
Windows Server 認定の静的分析の新機能
Windows Server 2025 認定の場合、CodeQL は静的ツール ロゴ テストで必須のツールとなります。つまり、すべてのドライバーの提出で、WHCP に対して受け入れられるすべての「要修正」ルールに少なくとも合格する必要があります。 ただし、Windows Server 2022 以下の認定を受ける場合、CA、SDV、CodeQL を使用できます。 一致する OS リリース バージョンで WDK ビルドを使用します。
さまざまなバージョンの WDK をダウンロードする方法については、「Windows ドライバー キット (WDK) のダウンロード」を参照してください。 Windows Insider プログラムに参加して Windows Insider Preview ビルド (https://aka.ms/wipwdk) をダウンロードします。
CodeQL とドライバー検証ログ (DVL) の生成
Microsoft では、静的ツール ロゴ テストを使用して CodeQL クエリを実行する要件を適用しています。 静的ツールロゴテストでは、ドライバー 検証ログ (DVL) を使用して、ドライバーのソースコードで実行されるさまざまな静的分析の結果を収集します。 この DVL は、HLK テストによって静的なツールのロゴテストの一部として解析されます。
CodeQL の結果は、DVL を使用したのと同じモデルに従って、認定されているドライバーが HLK テストに合格するために適切な CodeQL クエリを実行したことを示します。
.sarif ファイルを、DVL が生成される .vcxproj ファイルと同じディレクトリに配置します。 正確な名前は、ファイルが ". sarif"で終わる限り、問題にはなりません。
その他のドキュメント
この機能領域のテストには、前提条件、セットアップ、トラブルシューティング情報など、次のトピックに記載されている追加のドキュメントが含まれている場合があります。
テストの実行
テストを実行する前に、次の手順を実行して、ドライバー検証ログ (DVL) を作成する必要があります。
ドライバーのソース コードに対して、必要に応じて CodeQL、静的ドライバー検証ツール、Code Analysis ツールを実行します。
DVL ファイルを生成するユーティリティを実行します。 送信に含めるドライバー検証ログファイルの作成の詳細については、「 ドライバー検証ログの作成」を参照してください。
DVL ファイルの作成に使用したコンピューターから、スタティックツールロゴテストを実行するときに使用されるテストコンピューターに DVL ファイルをコピーします。 テストコンピューターの%systemdrive%\DVL ディレクトリにファイルをコピーします。 新しいドライバー検証ログをコピーする前に、必ずテスト コンピューター上のディレクトリの内容を削除してください。
静的ツールのロゴ テストを実行します。 テストが HLK に入力されない場合は、ドライバーがテスト署名されていることを確認してください (以下を参照)。 または、パッケージの一部として .sys ファイルを送信していない場合、テストはデータを入力しないことが予想されます。
Note
静的ツール ロゴ テストの目的は、ドライバー開発者として、バグを排除するために提出前にドライバー上で CodeQL を実行することを要求することです。 ただし、アーキテクチャ上の制限により、テストが誤ってスタック上の他のドライバーの CodeQL 結果を要求し、認定資格がブロックされたという報告を過去に受け取りました。
Windows 24H2 ではこの問題を解決するために、テスト対象デバイスのドライバーの署名がチェックされるモデルに移行しました。 この変更により、受信トレイの Windows ドライバーにテストのフラグは設定されません。 さらに、別のサードパーティのデバイスで HLK テストを実行している開発者のブロックを解除するために、このテストでは、WHCP 署名付きドライバーの結果にフラグが立てられることも回避されます。
認定のためにこのテストを実行するときは、テストが正しく機能することを確認するためにドライバーにテスト署名する必要があります。 これを行わないと、テストで CodeQL 違反に関する警告が失敗したり、テストで列挙に失敗したりする可能性があります。
Note
静的ツール ロゴ テストでは、Code QL が実行されたことを示すために DVL ファイルのみが必要です。 テストでは、すべての規則を提出する必要はありません。 また、このジョブは、Desktop を使用したサーバーで実行する必要があります。 HLK テストが Server Core の使用に失敗した場合 (エラーメッセージ: "RoMetadata.dll が見つかりませんでした")、回避策は、Server with Desktop を実行し、Server Core の結果を含むパッケージにパッケージをマージすることです。 パケットを結合する方法については、「/windows-hardware/test/hlk/user/merge-packages」を参照してください。
トラブルシューティング
HLK テスト エラーの一般的なトラブルシューティングについては、「Windows HLK テストのエラーのトラブルシューティング」を参照してください。
詳細
コマンド構文
コマンド オプション | 説明 |
---|---|
TE.exe/inproc/enablewttlogging/appendwttlogging Devfund_DvlTest.dll/p: WDKClass = [WDKClass]/p: DeviceClass = [DeviceClass]/p: QueryDriverNames = [QueryDriverNames] |
テストを実行します。 |
Note
このテスト バイナリのコマンド ライン ヘルプを表示するには、「/?」と入力します。
ファイル一覧
ファイル | 場所 |
---|---|
Devfund_DvlTest.dll |
<testbinroot>\OSBinRoot |
Microsoft.StaticToolsLogo.ObjectModel.dll |
<testbinroot>\OSBinRoot |
TE.exe |
<testbinroot>\OSBinRoot |
パラメーター
パラメーター名 | パラメーターの説明 |
---|---|
WDKClass | デバイス クラス |
DeviceClass | デバイス クラス パラメーター |
QueryDriverNames | 予想されるドライバー スタック。 |