服务测试,检查是否正确使用 Windows 服务。 例如,正在正确启动和停止服务。 有关 Windows 服务的详细信息,请参阅 服务。
以下停止代码包含在这组测试中。
使用非 Unicode API(例如 RegisterServiceCtrlHandlerA 而不是 RegisterServiceCtrlHandlerW)
可能导致大多数可能应用程序未使用定义的 UNICODE 宏进行编译,因此使用了非 Unicode 接口。
应用程序验证程序 显示的 信息- 格式: - API 名称 %ws
- 参数 1 - 未使用 。
- 参数 2 - 未使用 。
- 参数 3 - 未使用 。
- 参数 4 - 未使用 。
- 测试层: 服务
- 停止 ID: USING_NON_UNICODE_API
- 停止代码: 4000000
- 严重性: 错误
- 一次性错误: 否
- 错误报告: 中断
- 日志文件: 是
- 创建回溯: 是
第二次调用 StartServiceCtrlDispatcher API
可能导致此 API 只能在服务 wmain 函数开始时调用一次。
应用程序验证程序 显示的 信息- 格式: - API 名称 %ws
- 参数 1 - SERVICE_TABLE_ENTRY 参数。
- 参数 2 - 未使用 。
- 参数 3 - 未使用 。
- 参数 4 - 未使用 。
- 测试层: 服务
- 停止 ID: CTRL_DISPATCHER_CALLED_TWICE
- 停止代码: 4000001
- 严重性: 错误
- 一次性错误: 否
- 错误报告: 中断
- 日志文件: 是
- 创建回溯: 是
传递给 SetServiceStatus 的SERVICE_STATUS句柄无效
可能导致SERVICE_STATUS句柄传递到 SetServiceStatus 无效。
应用程序验证程序 显示的 信息- 格式: - API 名称 %ws
- 参数 1 - SERVICE_STATUS_HANDLE 值。
- 参数 2 - 未使用 。
- 参数 3 - 未使用 。
- 参数 4 - 未使用 。
- 测试层: 服务
- 停止 ID: INVALID_SERVICE_STATUS_HANDLE
- 停止代码: 4000002
- 严重性: 错误
- 一次性错误: 否
- 错误报告: 中断
- 日志文件: 是
- 创建回溯: 是
从两个线程调用 SetServiceStatus
可能导致此 API 旨在串行调用。
应用程序验证程序 显示的 信息- 格式: - 从 %ws 服务并发调用 API 名称 %ws
- 参数 1 - 传递 LPSERVICE_STATUS 值。
- 参数 2 - 未使用 。
- 参数 3 - 未使用 。
- 参数 4 - 未使用 。
- 测试层: 服务
- 停止 ID: SET_SERVICE_STATUS_RACE
- 停止代码: 4000003
- 严重性: 错误
- 一次性错误: 否
- 错误报告: 中断
- 日志文件: 是
- 创建回溯: 是
服务处于START_PENDING状态时接受 STOP/SHUTDOWN 控件
可能导致大多数服务在初始化期间无法接受停止/关闭控制
应用程序验证程序 显示的 信息- 格式: - 服务名称:%ws dwControlsAccepted: %08X
- 参数 1 - 传递 LPSERVICE_STATUS 值。
- 参数 2 - 未使用 。
- 参数 3 - 未使用 。
- 参数 4 - 未使用 。
- 测试层: 服务
- 停止 ID: STOP_SHUTDOWN_ACCEPTED
- 停止代码: 4000004
- 严重性: 警告
- 一次性错误: 否
- 错误报告: 无
- 日志文件: 是
- 创建回溯: 是
SERVICE 正在尝试无效状态转换
可能导致服务尝试执行无效状态转换或设置相同的状态参数
应用程序验证程序 显示的 信息- 格式: - 发现 服务 %ws 尝试无效状态转换
- 参数 1 - LPSERVICE_STATUS 当前状态。
- 参数 2 - LPSERVICE_STATUS 新状态。
- 参数 3 - Last SetServiceStatus 堆栈跟踪。
- 参数 4 - 未使用 。
- 测试层: 服务
- 停止 ID: INVALID_STATE_TRANSITION
- 停止代码: 4000005
- 严重性: 错误
- 一次性错误: 否
- 错误报告: 中断
- 日志文件: 是
- 创建回溯: 是
SERVICE 正在尝试设置相同的状态参数
可能导致服务尝试设置相同的状态参数
应用程序验证程序 显示的 信息- 格式: - 服务 %ws 尝试设置相同的状态参数
- 参数 1 - LPSERVICE_STATUS 当前状态。
- 参数 2 - LPSERVICE_STATUS 新状态。
- 参数 3 - Last SetServiceStatus 堆栈跟踪。
- 参数 4 - 未使用 。
- 测试层: 服务
- 停止 ID: DUPLICATE_STATE_PARAMS
- 停止代码: 4000006
- 严重性: 警告
- 一次性错误: 否
- 错误报告: 无
- 日志文件: 是
- 创建回溯: 是
进入 STOPPED 状态后,SERVICE 将离开挂起的线程
可能导致声明 STOPPED 状态后,服务将离开挂起的线程
应用程序验证程序 显示的 信息- 格式: - 服务 %ws 正在泄露线程
- 参数 1 - 泄露线程的线程 ID。
- 参数 2 - 服务标记。
- 参数 3 - 未使用 。
- 参数 4 - 未使用 。
- 测试层: 服务
- 停止 ID: LEAKED_THREAD
- 停止代码: 4000007
- 严重性: 错误
- 一次性错误: 否
- 错误报告: 中断
- 日志文件: 是
- 创建回溯: 是