Te.Service
マシン間でのテスト実行や RunAs など、TAEF の一部の機能では、Te.Service をインストールして起動する必要があります。
Te.Service をインストールして起動する
Wex.Services.exe、Wex.Common.dll、Wex.Communication.dll が、すべて同じディレクトリに存在することを確認します。 既定の場所は、WDK の \Testing\Runtimes\TAEF サブディレクトリです。
管理者特権のコマンド プロンプトで、以下のように入力します。
cd [your Wex.Services.exe directory] Wex.Services.exe /install:Te.Service sc start Te.Service
注: CoreSystem では、Te.Service をサービスとしてではなく、コンソール アプリケーションとして実行できます。
cd [your Wex.Services.exe directory]
Wex.Services.exe /run:Te.Service
Te.Service を停止して削除する
管理者特権のコマンド プロンプトで、以下のように入力します。
cd [your Wex.Services.exe directory] sc stop Te.Service Wex.Services.exe /remove:Te.Service
CoreSystem で、Te.Service を実行しているコンソール アプリケーションを閉じます。
サポートされるプロセッサ アーキテクチャ
x86 バージョンと x64 バージョンのどちらの Te.Service でも、x86 テストと x64 テストの実行がサポートされています。
セーフ モードでのインストール手順
既定では、セーフ モードでサービスを起動することはできません。 Sc start Te.Service を実行しようとすると、"Error 1084: This service cannot be started in Safe Mode" (エラー 1084: このサービスはセーフ モードで起動できません) というエラーが表示されます。このエラーは (Windows の) 設計上のものです。
TAEF サービスのセーフ モード機能を有効にするには、以下の手順に従います。
- Windows のスプラッシュ画面が表示される前に F8 キーを押して、コンピューターをセーフ モードで再起動します。
- [スタート] ボタン、 [ファイル名を指定して実行] の順にクリックし、「regedit」と入力して [OK] をクリックします。
- 次のレジストリ サブキーを見つけてクリックします:
- HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SafeBoot\Minimal (純粋なセーフ モードの場合)
- HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SafeBoot\Network (ネットワークが有効なセーフ モードの場合)
- [編集] メニューの [新規作成] をポイントし、[キー] をクリックし、「Te.Service」と入力します。
- [既定] をダブルクリックし、[値のデータ] ボックスに「Service」と入力して、[OK] をクリックします。
- レジストリ エディターを終了して、コンピューターを再起動します。
- 昇格権限でコマンド ウィンドウを開きます。
- これで、sc start Te.Service を使用してサービスが正常に起動するはずです。
通知にサブスクライブする
サーバー実行テストを開発する際には、HandlerEx コールバック関数と同様の方法で一部のサーバー通知をサブスクライブできます。 現時点では、SERVICE_CONTROL_SESSIONCHANGE コントロール コードのみがサポートされています。
サブスクライブするには、以下のことを行います。
- HandlerEx コールバック関数のシグネチャを使用してコールバック関数を定義します。
- TAEF 通知 API を使用して、この関数を登録します。
- 通知を受け取る必要がなくなった場合は、この関数の登録を解除します。
- コードを Te.Common.lib にリンクします。
例:
// define a call back function
DWORD WINAPI HandlerEx(DWORD dwControl, DWORD dwEventType, LPVOID, LPVOID)
{
// Do some work here
return 0;
}
// register the callback function to receive notifications
TestNotification::RegisterHandler(HandlerEx));