SERVICE_CONTROL_STATUS_REASON_PARAMSW 结构 (winsvc.h)

包含服务控制参数。

语法

typedef struct _SERVICE_CONTROL_STATUS_REASON_PARAMSW {
  DWORD                  dwReason;
  LPWSTR                 pszComment;
  SERVICE_STATUS_PROCESS ServiceStatus;
} SERVICE_CONTROL_STATUS_REASON_PARAMSW, *PSERVICE_CONTROL_STATUS_REASON_PARAMSW;

成员

dwReason

将服务状态更改为SERVICE_CONTROL_STOP的原因。 如果未SERVICE_CONTROL_STOP当前控件代码,则忽略此成员。

此成员必须设置为一个常规代码、一个主要原因代码和一个次要原因代码的组合。

下面是一般原因代码。

含义
SERVICE_STOP_REASON_FLAG_CUSTOM
0x20000000
原因代码由用户定义。 如果此标志不存在,则原因代码由系统定义。 如果此标志是使用系统原因代码指定的,则函数调用将失败。

用户可以在SERVICE_STOP_REASON_MAJOR_MIN_CUSTOM (0x00400000) 范围内通过SERVICE_STOP_REASON_MAJOR_MAX_CUSTOM (0x00ff0000) 创建自定义主要原因代码,在SERVICE_STOP_REASON_MINOR_MAX_CUSTOM (0x0000FFFF) SERVICE_STOP_REASON_MINOR_MIN_CUSTOM (0x00000100) 范围内创建次要原因代码。

SERVICE_STOP_REASON_FLAG_PLANNED
0x40000000
已计划停止服务。
SERVICE_STOP_REASON_FLAG_UNPLANNED
0x10000000
未计划停止服务。
 

以下是主要原因代码。

含义
SERVICE_STOP_REASON_MAJOR_APPLICATION
0x00050000
应用程序问题。
SERVICE_STOP_REASON_MAJOR_HARDWARE
0x00020000
硬件问题。
SERVICE_STOP_REASON_MAJOR_NONE
0x00060000
没有主要原因。
SERVICE_STOP_REASON_MAJOR_OPERATINGSYSTEM
0x00030000
操作系统问题。
SERVICE_STOP_REASON_MAJOR_OTHER
0x00010000
其他问题。
SERVICE_STOP_REASON_MAJOR_SOFTWARE
0x00040000
软件问题。
 

下面是次要原因代码。

含义
SERVICE_STOP_REASON_MINOR_DISK
0x00000008
SERVICE_STOP_REASON_MINOR_ENVIRONMENT
0x0000000a
环境。
SERVICE_STOP_REASON_MINOR_HARDWARE_DRIVER
0x0000000b
司机。
SERVICE_STOP_REASON_MINOR_HUNG
0x00000006
反应 迟钝。
SERVICE_STOP_REASON_MINOR_INSTALLATION
0x00000003
安装。
SERVICE_STOP_REASON_MINOR_MAINTENANCE
0x00000002
维护。
SERVICE_STOP_REASON_MINOR_MMC
0x00000016
MMC 问题。
SERVICE_STOP_REASON_MINOR_NETWORK_CONNECTIVITY
0x00000011
网络连接。
SERVICE_STOP_REASON_MINOR_NETWORKCARD
0x00000009
网络卡。
SERVICE_STOP_REASON_MINOR_NONE
0x00060000
没有次要原因。
SERVICE_STOP_REASON_MINOR_OTHER
0x00000001
其他问题。
SERVICE_STOP_REASON_MINOR_OTHERDRIVER
0x0000000c
其他驱动程序事件。
SERVICE_STOP_REASON_MINOR_RECONFIG
0x00000005
配置。
SERVICE_STOP_REASON_MINOR_SECURITY
0x00000010
安全问题。
SERVICE_STOP_REASON_MINOR_SECURITYFIX
0x0000000f
安全更新。
SERVICE_STOP_REASON_MINOR_SECURITYFIX_UNINSTALL
0x00000015
安全更新卸载。
SERVICE_STOP_REASON_MINOR_SERVICEPACK
0x0000000d
Service Pack。
SERVICE_STOP_REASON_MINOR_SERVICEPACK_UNINSTALL
0x00000013
卸载 Service Pack。
SERVICE_STOP_REASON_MINOR_SOFTWARE_UPDATE
0x0000000e
软件更新。
SERVICE_STOP_REASON_MINOR_SOFTWARE_UPDATE_UNINSTALL
0x0000000e
软件更新卸载。
SERVICE_STOP_REASON_MINOR_UNSTABLE
0x00000007
稳定。
SERVICE_STOP_REASON_MINOR_UPGRADE
0x00000004
升级。
SERVICE_STOP_REASON_MINOR_WMI
0x00000012
WMI 问题。

pszComment

一个可选字符串,提供有关服务停止的其他信息。 此字符串与停止原因代码一起存储在事件日志中。 此成员必须是 NULL 或小于 128 个字符的有效字符串,包括终止 null 字符。

ServiceStatus

指向接收最新服务状态信息的 SERVICE_STATUS_PROCESS 结构的指针。 返回的信息反映了服务向服务控制管理器报告的最新状态。

仅当 ControlServiceEx 返回以下错误代码之一时,服务控制管理器才会填充结构:NO_ERROR、ERROR_INVALID_SERVICE_CONTROL、ERROR_SERVICE_CANNOT_ACCEPT_CTRL或ERROR_SERVICE_NOT_ACTIVE。 否则,不会填充结构。

注解

注意

winsvc.h 标头将 SERVICE_CONTROL_STATUS_REASON_PARAMS 定义为别名,该别名根据 UNICODE 预处理器常量的定义自动选择此函数的 ANSI 或 Unicode 版本。 将非特定编码别名的使用与非非特定编码的代码混合使用可能会导致不匹配,从而导致编译或运行时错误。 有关详细信息,请参阅 函数原型的约定

要求

   
最低受支持的客户端 Windows Vista [仅限桌面应用]
最低受支持的服务器 Windows Server 2008 [仅限桌面应用]
标头 winsvc.h (包括 Windows.h)

另请参阅

ControlServiceEx

SERVICE_STATUS_PROCESS