SERVICE_CONTROL_STATUS_REASON_PARAMSA结构(winsvc.h)
包含服务控制参数。
语法
typedef struct _SERVICE_CONTROL_STATUS_REASON_PARAMSA {
DWORD dwReason;
LPSTR pszComment;
SERVICE_STATUS_PROCESS ServiceStatus;
} SERVICE_CONTROL_STATUS_REASON_PARAMSA, *PSERVICE_CONTROL_STATUS_REASON_PARAMSA;
成员
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_MIN_CUSTOM SERVICE_STOP_REASON_MINOR_MAX_CUSTOM(0x00000100)范围内的次要原因代码(0x0000FFFF)创建自定义主要原因代码。
|
-
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_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