SERVICE_FAILURE_ACTIONSA 结构 (winsvc.h)

表示服务控制器应对服务的每个故障执行的操作。 服务在未向服务控制器报告 SERVICE_STOPPED 状态的情况下终止时,会将其视为失败。

若要配置执行失败操作的其他情况,请参阅 SERVICE_FAILURE_ACTIONS_FLAG

语法

typedef struct _SERVICE_FAILURE_ACTIONSA {
  DWORD     dwResetPeriod;
  LPSTR     lpRebootMsg;
  LPSTR     lpCommand;
  DWORD     cActions;
  SC_ACTION *lpsaActions;
} SERVICE_FAILURE_ACTIONSA, *LPSERVICE_FAILURE_ACTIONSA;

成员

dwResetPeriod

如果没有故障,则将失败计数重置为零的时间(以秒为单位)。 指定 INFINITE 以指示此值不应重置。

lpRebootMsg

重新启动之前要广播给服务器用户的消息,以响应 SC_ACTION_REBOOT 服务控制器操作。

如果此值为 NULL,则重新启动消息保持不变。 如果值为空字符串 (“”) ,则会删除重新启动消息,并且不广播任何消息。

此成员可使用以下格式指定本地化字符串:

@[path]dllname,-strID

具有标识符 strID 的字符串从 dllname 加载; 路径 是可选的。 有关详细信息,请参阅 RegLoadMUIString

Windows Server 2003 和 Windows XP: 在 Windows Vista 之前不支持本地化字符串。

lpCommand

CreateProcess 函数要执行以响应SC_ACTION_RUN_COMMAND服务控制器操作的进程命令行。 此过程在与服务相同的帐户下运行。

如果此值为 NULL,则命令保持不变。 如果值为空字符串 (“”) ,则当服务失败时,命令将被删除,并且不运行任何程序。

cActions

lpsaActions 数组中的元素数。

如果此值为 0,但 lpsaActions 不为 NULL,则会删除重置周期和失败操作数组。

lpsaActions

指向 SC_ACTION 结构的数组的指针。

如果此值为 NULL,则忽略 cActionsdwResetPeriod 成员。

注解

服务控制管理器计算自系统启动以来每个服务失败的次数。 如果服务在 dwResetPeriod 秒内未失败,则计数将重置为 0。 当服务第 N次失败时,服务控制器将执行 lpsaActions 数组的元素 [N-1] 中指定的操作。 如果 N 大于 cActions,则服务控制器将重复数组中的上一个操作。

注意

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

要求

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

另请参阅

ChangeServiceConfig2

CreateProcess

QueryServiceConfig2

SC_ACTION

SERVICE_FAILURE_ACTIONS_FLAG