應用程式驗證器 - 停止代碼 - 服務
服務會測試、檢查 Windows 服務的適當使用方式。 例如,正在正確啟動和停止服務。 如需 Windows 服務的詳細資訊,請參閱 服務。
下列停止代碼包含在這組測試中。
使用非 Unicode API (例如 RegisterServiceCtrlHandlerA,而不是 RegisterServiceCtrlHandlerW)
可能的原因大部分的應用程式可能未使用定義的 UNICODE 宏進行編譯,因此會使用非 Unicode 介面。
應用程式驗證器顯示的資訊- 格式: - API 名稱 %ws
- 參數 1 - 未使用。
- 參數 2 - 未使用。
- 參數 3 - 未使用。
- 參數 4 - 未使用。
- 測試層: 服務
- 停止識別碼: USING_NON_UNICODE_API
- 停止程式碼: 4000000
- 嚴重性: 錯誤
- 一次性錯誤: 不
- 錯誤報表: 打破
- 記錄到檔案: 是的
- 建立回溯: 是的
StartServiceCtrlDispatcher API 第二次呼叫
可能的原因此 API 只在服務 wmain 函式開始時呼叫一次。
應用程式驗證器顯示的資訊- 格式: - API 名稱 %ws
- 參數 1 - SERVICE_TABLE_ENTRY 參數。
- 參數 2 - 未使用。
- 參數 3 - 未使用。
- 參數 4 - 未使用。
- 測試層: 服務
- 停止識別碼: CTRL_DISPATCHER_CALLED_TWICE
- 停止程式碼: 4000001
- 嚴重性: 錯誤
- 一次性錯誤: 不
- 錯誤報表: 打破
- 記錄到檔案: 是的
- 建立回溯: 是的
傳遞至 SetServiceStatus SERVICE_STATUS控制碼無效
可能的原因傳遞至 SetServiceStatus SERVICE_STATUS控制碼無效。
應用程式驗證器顯示的資訊- 格式: - API 名稱 %ws
- 參數 1 - SERVICE_STATUS_HANDLE 值。
- 參數 2 - 未使用。
- 參數 3 - 未使用。
- 參數 4 - 未使用。
- 測試層: 服務
- 停止識別碼: INVALID_SERVICE_STATUS_HANDLE
- 停止程式碼: 4000002
- 嚴重性: 錯誤
- 一次性錯誤: 不
- 錯誤報表: 打破
- 記錄到檔案: 是的
- 建立回溯: 是的
從兩個執行緒呼叫 SetServiceStatus
可能的原因此 API 是要以序列方式呼叫。
應用程式驗證器顯示的資訊- 格式: - 從 %ws 服務同時呼叫 API 名稱 %ws
- 參數 1 傳遞的 - LPSERVICE_STATUS 值。
- 參數 2 - 未使用。
- 參數 3 - 未使用。
- 參數 4 - 未使用。
- 測試層: 服務
- 停止識別碼: SET_SERVICE_STATUS_RACE
- 停止程式碼: 4000003
- 嚴重性: 錯誤
- 一次性錯誤: 不
- 錯誤報表: 打破
- 記錄到檔案: 是的
- 建立回溯: 是的
當服務處於START_PENDING狀態時,會接受 STOP/SHUTDOWN 控制項
可能的原因大部分服務在初始化期間都無法接受停止/關機控制
應用程式驗證器顯示的資訊- 格式: - 服務名稱: %ws dwControlsAccepted: %08X
- 參數 1 傳遞的 - LPSERVICE_STATUS 值。
- 參數 2 - 未使用。
- 參數 3 - 未使用。
- 參數 4 - 未使用。
- 測試層: 服務
- 停止識別碼: STOP_SHUTDOWN_ACCEPTED
- 停止程式碼: 4000004
- 嚴重性: 警告
- 一次性錯誤: 不
- 錯誤報表: 沒有
- 記錄到檔案: 是的
- 建立回溯: 是的
SERVICE 正在嘗試不正確狀態轉換
可能的原因服務嘗試執行不正確狀態轉換或設定相同的狀態參數
應用程式驗證器顯示的資訊- 格式: - 找不到嘗試無效狀態轉換的服務 %ws
- 參數 1 - LPSERVICE_STATUS目前狀態。
- 參數 2 - LPSERVICE_STATUS新狀態。
- 參數 3 - Last SetServiceStatus 堆疊追蹤。
- 參數 4 - 未使用。
- 測試層: 服務
- 停止識別碼: INVALID_STATE_TRANSITION
- 停止程式碼: 4000005
- 嚴重性: 錯誤
- 一次性錯誤: 不
- 錯誤報表: 打破
- 記錄到檔案: 是的
- 建立回溯: 是的
SERVICE 嘗試設定相同的狀態參數
可能的原因服務嘗試設定相同的狀態參數
應用程式驗證器顯示的資訊- 格式: - 服務 %ws 嘗試設定相同的狀態參數
- 參數 1 - LPSERVICE_STATUS目前狀態。
- 參數 2 - LPSERVICE_STATUS新狀態。
- 參數 3 - Last SetServiceStatus 堆疊追蹤。
- 參數 4 - 未使用。
- 測試層: 服務
- 停止識別碼: DUPLICATE_STATE_PARAMS
- 停止程式碼: 4000006
- 嚴重性: 警告
- 一次性錯誤: 不
- 錯誤報表: 沒有
- 記錄到檔案: 是的
- 建立回溯: 是的
進入 STOPPED 狀態之後,SERVICE 會離開擱置中的執行緒
可能的原因服務在宣告 STOPPED 狀態之後離開擱置中的執行緒
應用程式驗證器顯示的資訊- 格式: - 服務 %ws 正在流失執行緒
- 參數 1 - 外泄執行緒的執行緒識別碼。
- 參數 2 - Service 標籤。
- 參數 3 - 未使用。
- 參數 4 - 未使用。
- 測試層: 服務
- 停止識別碼: LEAKED_THREAD
- 停止程式碼: 4000007
- 嚴重性: 錯誤
- 一次性錯誤: 不
- 錯誤報表: 打破
- 記錄到檔案: 是的
- 建立回溯: 是的