デバイスの基礎テストの選択および構成方法

Windows 8 用 WDK には、Device Fundamental テストと呼ばれる一連のテストを含むドライバー テスト フレームワークが用意されています。 デバイスの基礎テストは、Windows および WDK に付属のドライバーとドライバー サンプルをテストするためにMicrosoft社内で使用されるテストの集合であり、ハードウェアの Windows 認定プログラムの一部として社外で使用されるテストの集合です。 開発環境からテストを実行できます。 テストを実行するときは、Windows 認定テストに使用されるのと同じパラメーターを使用することも、テストとデバッグのニーズに応じて実行時パラメーターを構成およびカスタマイズすることもできます。

Device Fundamental テストの有効活用

デバイスの基礎テストから最大限のメリットを得るには、デバイスがデフォルトの I/O プラグインでサポートされている必要があります。デバイスタイプがサポートされているかどうかを確認し、テストに特定の要件があるかどうかを判断するには、提供されている WDTF Simple I/O プラグインを参照してください。デバイスの基礎テストには、デバイスがサポートされているかどうかをテストするために使用できるユーティリティも含まれています。 デバイスがサポートされていない場合は、WDTF Simple I/O プラグインを作成できます。 Visual Studio で。 詳細については、WDTF シンプル I/O アクション プラグインを使用してデバイスの I/O をカスタマイズする方法を参照してください。

Device Fundamental テストについて

WDK は、基本と認証の2つの構成でデバイスの基礎テストを提供します。 どちらの構成でも、対象のデバイスまたはドライバーをテストする方法に応じて、テストパラメーターを編集して、テストの長さ、実行するテスト サイクルの数、およびその他のテストパラメーターを変更できます。 基本構成は、一般的なドライバーとデバイスのテストとデバッグを目的としています。 基本構成は、開発サイクルの初期段階および開発サイクル全体を通じて使用してください。 基本構成のテストには、実行時間が短いことを除いて、Windows 認定テストで使用されるものと同じ設定が含まれています。 認定構成では、テストにはWindows 認定テストで使用されるのと同じ設定が含まれます。 認定構成を使用して、ハードウェアの Windows 認定プログラムのデバイスまたはドライバーをテストする準備ができているかどうかを確認します。

デバイスの基礎テストには、次のカテゴリのテストが含まれます。

実行時テスト パラメーターの設定

多くのデバイスの基礎テストの実行時パラメータを編集できます。 ドライバー テスト グループのウィンドウで、テスト名の横にある矢印 (>>) は、テストに変更可能なパラメーターがあることを示します。 矢印 (») を選び、ランタイム パラメーターを表示します。

最も便利なパラメータの1つはDQで、テストするターゲットデバイスを指定します。 デフォルト値 (IsDevice) は、ターゲットコンピューター上のすべてのデバイスをテストします。 DQ パラメーターは、対象のデバイスを特定する WDTF SDEL クエリを受け取ります。 テスト用に特定のデバイスを指定できます。例:

DeviceID=’USB\ROOT_HUB\4&1CD5D022&0’ は、DeviceID で指定されたデバイスのみをテスト対象として選択します。

DQ およびその他の実行時パラメーターの詳細については、デバイスの基礎テスト パラメーターを参照してください。

Device Fundamental テストのパラメーター

パラメーター 説明

DQ

テストに使用する必要があるデバイスを特定します。 DQ パラメーターは、対象のデバイスを特定する WDTFSDEL クエリを受け取ります。 このクエリは非常に柔軟であり、単一のデバイスからシステム内のすべてのデバイスまで、任意の数のデバイスを表現するために使用できます。

一般的な例:

特定のINFファイルを使用してインストールされたすべてのデバイスをテストするには:

INF::ファイル名=INF_ファイル名

例: INF::OriginalInfFileName='KMDFTest.inf'

Inf::OriginalInFileName は任意の INF と共に使用できます。

特定のデバイスIDを持つデバイスをテストするには:

デバイスID='デバイスID'

例: DeviceID=’USB\ROOT_HUB\4&1CD5D022&0’

特定のインターフェイスを備えたデバイスをテストするには:

インターフェイス::インターフェイスGUID

特定のドライバー文字を使用してデバイスをテストするには:

Volume::DriverLetter=’DriveLetter'

たとえば、Volume::DriverLetter=’c:\’

特定のドライバーを使用してデバイスをテストするには:

DriverBinaryNames=mydriver.sys

ここで、KMDFTest.inf はドライバーのインストールに使用される inf です。 KMDFTest.sys ドライバーを使用する以下の対象デバイスを使用することもできます。

(DriverBinaryNames='KMDFTest.sys') は機能します。

SDEL を正しく設定した後、テストを実行すると、コンソールに次の出力が表示されます。

WDTF_TARGETS : INFO : - Query("IsDevice AND ((Inf::OriginalInfFileName='KMDFTest.inf'))") WDTF_TARGETS : INFO : Target: KMDFTest Device ROOT\SAMPLE\0000 ​ WDTF_TEST : INFO : WARNING: The test is not enforcing that Driver Verifier is enabled.​ WDTF_TEST : INFO : DV is enabled with Flag:=0x209bb​ WDTF_TEST : INFO : DV is successfully enabled for all drivers of this devnode(UniqueTargetName):=KMDFTest Device ROOT\SAMPLE\0000 ​ WDTF_TARGET : INFO : - GetInterface("Support")​ WDTF_TARGET : INFO : Target: DESKTOP-2OVFH3G​ WDTF_TARGETS : INFO : - Query("IsDevice")​ WDTF_TARGETS : INFO : Target: KMDFTest Device ROOT\SAMPLE\0000 ​ WDTF_TARGETS : INFO : - GetRelations("below-or-self/","IsDevice")​ WDTF_TARGETS : INFO : Target: KMDFTest Device ROOT\SAMPLE\0000 ​ WDTF_TARGETS : INFO : - GetInterfacesIfExist("SimpleIOStressProc")​ WDTF_SIMPLE_IO : INFO : - For Target:KMDFTest Device ROOT\SAMPLE\0000 no Simple IO Interface was found.​ WDTF_SIMPLE_IO : INFO : - For Target:KMDFTest Device ROOT\SAMPLE\0000 WDTF will use the ANY Simple IO Interface.​

See attached files config and log files for more details. WDTF_TARGETS : INFO : Target: KMDFTest Device ROOT\SAMPLE\0000 ​ WDTF_TEST : INFO : Perform 1 cycle(s) of I/O termination test​ WDTF_TEST : INFO : I/O termination cycle #1​ WDTF_SIMPLEIO_STRESS_PROC : INFO : - StartAsync(KMDFTest Device ROOT\SAMPLE\0000 )​ WDTF_SIMPLEIO_STRESS_PROC : INFO : - WaitAsyncCompletion(KMDFTest Device ROOT\SAMPLE\0000 )​ WDTF_SIMPLE_IO : INFO : - For Target:KMDFTest Device ROOT\SAMPLE\0000 no Simple IO Interface was found.​ WDTF_SIMPLE_IO : INFO : - For Target:KMDFTest Device ROOT\SAMPLE\0000 WDTF will use the ANY Simple IO Interface.​ WDTF_SIMPLE_IO : INFO : - Open(KMDFTest Device ROOT\SAMPLE\0000 ) Try count 1​ WDTF_SUPPORT : INFO : - WaitForMinutes : 1​ WDTF_SIMPLE_IO : INFO : - PerformIO(KMDFTest Device ROOT\SAMPLE\0000 ) Count 1​ WDTF_SIMPLEIO_STRESS_PROC : INFO : - Terminate(KMDFTest Device ROOT\SAMPLE\0000 ) process

特定のデバイス クラスのすべてのデバイスをテストするには:

たとえば、Class=CDROMは、クラス CDROMのすべてのデバイスをテストします。

たとえば、ClassGUID= {36fc9e60-c465-11cf-8056-444553540000}は、クラス GUID が指定された GUID と一致するすべてのデバイスをテストします。 この場合、GUIDはUSBクラス用です。

DoPoolCheck

正誤問題。 プール タグとルックアサイド リストを使用して、ドライバーによるページ システム メモリプールと非ページ システムメモリ プールの使用を監視します。 このオプションは、例外処理のエラーを示す可能性のある、処理された例外の数の変化も監視します。

ChangeBufferProtectionFlags

正誤問題。 テスト対象デバイスに渡されるバッファのメモリ保護フラグを変更します。 メモリ保護フラグは、アクセスなし、読み取り専用、ページ ガード付き読み取り専用の間で切り替わります。

DoSimpleIO

正誤問題。 PNP 操作の実行前後に、テストデバイス上で SimpleI/O (見つかった場合) を実行します。

DoConcurrentIO

正誤問題。 WDTF同時 I/O インターフェイスを使用して、PnP 操作の実行中に I/O リクエストをターゲットデバイス スタックに送信します。

FillZeroPageWithNull

正誤問題。 ゼロページをマップし、NULL値で埋めます。 このテストでは、ポインターの参照を解除する前にポインター参照を検証しないドライバーを特定します。

FuzzTestPeriod

ファズテスト期間(分単位)。

HPU

高いプロセッサ使用率を指定します。

Impersonate

正誤問題。 管理者権限のないユーザーとしてテストを実行します。

IOPeriod

I/O期間を分単位で指定します。

IOType

I/O ストレス テストのタイプを指定します:SimpleIOStressEx またはSimpleIOStressProc (別のプロセスの I/O)。

LPU

低いプロセッサ使用率を指定します。

MaxInBuffer

テストが FSCTL (または IOCTL テストの場合は IOCTL)でドライバーに渡す入力バッファーの最大サイズをバイト単位で指定します。

MinInBuffer

テストが FSCTL (または IOCTL テストの場合は IOCTL)でドライバーに渡す入力バッファーの最小サイズをバイト単位で指定します。

MaxOutBuffer

テストが FSCTL (または IOCTL テストの場合は IOCTL)でドライバーに渡す出力バッファーの最大サイズをバイト単位で指定します。

MinOutBuffer

テストが FSCTL (または IOCTL テストの場合は IOCTL) でドライバーに渡す出力バッファーの最小サイズをバイト単位で指定します。

MaxRandomCalls

テストが発行する呼び出しの最大数を指定します。

MaxTailoredCalls

調整されたランダムテスト中にテストが発行する呼び出しの最大数を指定します。

MaxDeviceType

FSCTL (または IOCTL テストの場合は IOCTL) のデバイスタイプフィールドの最大値を指定します。 可能な最大値は65535です。

MinDeviceType

FSCTL (または IOCTL テストの場合は IOCTL) のデバイスタイプフィールドの最小値を指定します。 可能な最小値は 0 です。

MaxFunctionCode

FSCTL (または IOCTL テストの場合は IOCTL) の機能コードフィールドの最大値を指定します。 可能な最大値は 4095 です。

MinFunctionCode

FSCTL (またはIOCTLテストの場合は IOCTL) の機能コードフィールドの最小値を指定します。 可能な最小値は 0 です。

PU

プロセッサー使用率を指定します

PingPongPeriod

ピンポン期間を分単位で指定します。プロセッサーが高 (HPU) プロセッサー使用率レベルと低 (LPU) プロセッサー使用率レベルを切り替える時間。

ResumeDelay

マシンがスリープモードから再開してから次の I/O サイクルが開始するまでの遅延時間 (秒単位)。 遅延時間は、デバイスが動作状態を復元できるようにするために必要です (ネットワーク カードのIPアドレスを更新するなど)。

TestCycles

実行するテスト サイクル (反復) の数を指定します。

WDTFREMOTESYSTEM

このパラメーターは、テスト対象のデバイス、またはその子デバイスの 1 つが IPv6 ゲートウェイ アドレスを持たない有線ネットワーク アダプターである場合にのみ必要です。 ネットワークでこのパラメーターが必要な場合は、テスト ネットワーク アダプターがテスト ネットワークに ping できる IPv6 アドレスを指定する必要があります。

例えば: fe80::78b6:810:9c12:46cd

Wpa2PskAesSsid

このパラメーターは、テスト対象のデバイスまたはその子デバイスの 1 つが WiFi アダプターである場合にのみ必要です。 WiFiアダプターのテストに使用できるWPA2 AES WiFi ネットワークの SSIDを指定します。

デフォルト値: kitstestssid

Wpa2PskPassword

このパラメーターは、テスト対象のデバイスまたはその子デバイスの 1 つが WiFi アダプターである場合にのみ必要です。 Wpa2PskAesSsid パラメーターを使用して指定されたWPA2 AES WiFi ネットワークのパスワードを指定します。

デフォルト値: パスワード

ユーティリティ テスト

テスト 説明

WDTF シンプル I/O プラグインを持つデバイスの表示

パラメーター:なし

ドライバーの検証ツールが有効になっているデバイスの表示

パラメーター:なし

ディスプレイ デバイス

パラメーター:なし

ドライバーの検証ツール

テスト 説明

Disable Driver Verifier (ドライバーの検証ツールの無効化)

テストコンピューターでドライバー検証機を無効にします。

パラメーター:なし

Enable Driver Verifier (ドライバーの検証ツールの有効化)

このテストを使用して、テストコンピューター上の 1つまたは複数のデバイスのすべてのドライバーに対してドライバー検証機を有効にすることができます。

パラメーター: - 「ドライバーの検証ツールのオプション」をご覧ください。