次の方法で共有


アプリケーション検証ツール - 停止コード - サービス

サービスは、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 回限りエラー: いいえ
  • エラー レポート: 中断
  • ファイルにログを記録する: はい
  • バックトレースの作成: はい

参照

アプリケーション検証ツール - 停止コードと定義

アプリケーション検証ツール - 概要

アプリケーション検証ツール - 機能

アプリケーション検証ツール - アプリケーションのテスト

アプリケーション検証ツール - アプリケーション検証ツール内のテスト

アプリケーション検証ツール - アプリケーション検証ツール停止のデバッグ

アプリケーション検証ツール - よく寄せられる質問