アプリケーション検証ツール - 停止コード - サービス
サービスは、Windows サービスを適切に使用するためにチェックテストします。 たとえば、サービスが正常に開始および停止されている場合などです。 Windows サービスの使用詳細については、「サービス」を参照してください。
この一連のテストには、次の停止コードが含まれています。
Unicode 以外の API の使用 (RegisterServiceCtrlHandlerW の代わりに RegisterServiceCtrlHandlerA など)
考えられる原因ほとんどの場合、アプリケーションは UNICODE マクロを定義してコンパイルされていないため、Unicode 以外のインターフェイスが使用されます。
アプリケーション検証ツールによって表示される情報- Format: - API name %ws
- Parameter 1 - 使用されていません。
- Parameter 2 - 使用されていません。
- Parameter 3 - 使用されていません。
- Parameter 4 - 使用されていません。
- テスト レイヤー: サービス
- 停止 ID: USING_NON_UNICODE_API
- ストップコード: 4000000
- 重要度: エラー
- 1 回限りエラー: いいえ
- エラー レポート: 中断
- ファイルにログを記録する: はい
- バックトレースの作成: はい
StartServiceCtrlDispatcher API が 2 回目に呼び出される
考えられる原因この API は、サービス wmain 関数の開始時に 1 回だけ呼び出されるように意図されています。
アプリケーション検証ツールによって表示される情報- Format: - API name %ws
- Parameter 1 - SERVICE_TABLE_ENTRY パラメーター。
- Parameter 2 - 使用されていません。
- Parameter 3 - 使用されていません。
- Parameter 4 - 使用されていません。
- テスト レイヤー: サービス
- 停止 ID: CTRL_DISPATCHER_CALLED_TWICE
- ストップコード: 4000001
- 重要度: エラー
- 1 回限りエラー: いいえ
- エラー レポート: 中断
- ファイルにログを記録する: はい
- バックトレースの作成: はい
無効なSERVICE_STATUS ハンドルが SetServiceStatus に渡されています
考えられる原因無効なSERVICE_STATUS ハンドルが SetServiceStatus に渡されています。
アプリケーション検証ツールによって表示される情報- Format: - API name %ws
- Parameter 1 - SERVICE_STATUS_HANDLE 値。
- Parameter 2 - 使用されていません。
- Parameter 3 - 使用されていません。
- Parameter 4 - 使用されていません。
- テスト レイヤー: サービス
- Stop ID: INVALID_SERVICE_STATUS_HANDLE
- ストップコード: 4000002
- 重要度: エラー
- 1 回限りエラー: いいえ
- エラー レポート: 中断
- ファイルにログを記録する: はい
- バックトレースの作成: はい
SetServiceStatus が 2 つのスレッドから呼び出されている
考えられる原因この API は、順次呼び出されることを意図しています。
アプリケーション検証ツールによって表示される情報- 形式: - API 名 %ws が %ws サービスから同時に呼び出されている
- Parameter 1 - LPSERVICE_STATUS 値が渡されました。
- Parameter 2 - 使用されていません。
- Parameter 3 - 使用されていません。
- Parameter 4 - 使用されていません。
- テスト レイヤー: サービス
- Stop ID: SET_SERVICE_STATUS_RACE
- ストップコード: 4000003
- 重要度: エラー
- 1 回限りエラー: いいえ
- エラー レポート: 中断
- ファイルにログを記録する: はい
- バックトレースの作成: はい
サービスがSTART_PENDING状態の間、STOP/SHUTDOWN コントロールが受け入れられている
考えられる原因ほとんどのサービスでは、初期化中に停止/シャットダウン制御を受け入れることができません
アプリケーション検証ツールによって表示される情報- 形式: - サービス名: %ws dwControlsAccepted: %08X
- Parameter 1 - LPSERVICE_STATUS 値が渡されました。
- Parameter 2 - 使用されていません。
- Parameter 3 - 使用されていません。
- Parameter 4 - 使用されていません。
- テスト レイヤー: サービス
- 停止 ID: STOP_SHUTDOWN_ACCEPTED
- ストップコード: 4000004
- 重要度: 警告
- 1 回限りエラー: いいえ
- エラー レポート: なし
- ファイルにログを記録する: はい
- バックトレースの作成: はい
SERVICE が無効な状態遷移を試行しています
考えられる原因サービスが無効な状態遷移を実行しようとしたか、同じ状態パラメーターを設定しようとしました
アプリケーション検証ツールによって表示される情報- 形式: - Service %ws が無効な状態遷移を試みて見つかりました
- Parameter 1 - LPSERVICE_STATUS 現在の状態。
- Parameter 2 - LPSERVICE_STATUS 新しい状態。
- Parameter 3 - Last SetServiceStatus スタック トレース。
- Parameter 4 - 使用されていません。
- テスト レイヤー: サービス
- 停止 ID: INVALID_STATE_TRANSITION
- ストップコード: 4000005
- 重要度: エラー
- 1 回限りエラー: いいえ
- エラー レポート: 中断
- ファイルにログを記録する: はい
- バックトレースの作成: はい
Standard Edition RVICE が同じ状態パラメーターを設定しようとしています
考えられる原因サービスは同一のステータスパラメータを設定しようとしました
アプリケーション検証ツールによって表示される情報- 形式: - サービス %ws が同じ状態パラメーターを設定しようとしました
- Parameter 1 - LPSERVICE_STATUS 現在の状態。
- Parameter 2 - LPSERVICE_STATUS 新しい状態。
- Parameter 3 - Last SetServiceStatus スタック トレース。
- Parameter 4 - 使用されていません。
- テスト レイヤー: サービス
- 停止 ID: DUPLICATE_STATE_PARAMS
- ストップコード: 4000006
- 重要度: 警告
- 1 回限りエラー: いいえ
- エラー レポート: なし
- ファイルにログを記録する: はい
- バックトレースの作成: はい
SERVICE が停止状態に入った後、保留中のスレッドから離脱しています。
考えられる原因SERVICE が停止状態を宣言した後、保留中のスレッドから離脱しています。
アプリケーション検証ツールによって表示される情報- 形式: - サービス %ws がスレッドをリークしています
- Parameter 1 - リークしたスレッドのスレッド ID。
- Parameter 2 - サービス タグ。
- Parameter 3 - 使用されていません。
- Parameter 4 - 使用されていません。
- テスト レイヤー: サービス
- 停止 ID: LEAKED_THREAD
- ストップコード: 4000007
- 重要度: エラー
- 1 回限りエラー: いいえ
- エラー レポート: 中断
- ファイルにログを記録する: はい
- バックトレースの作成: はい
参照
アプリケーション検証ツール - アプリケーション検証ツール内のテスト