SERVICE_STATUS_PROCESS结构 (winsvc.h)
包含服务的进程状态信息。 ControlServiceEx、EnumServicesStatusEx、NotifyServiceStatusChange 和 QueryServiceStatusEx 函数使用此结构。
语法
typedef struct _SERVICE_STATUS_PROCESS {
DWORD dwServiceType;
DWORD dwCurrentState;
DWORD dwControlsAccepted;
DWORD dwWin32ExitCode;
DWORD dwServiceSpecificExitCode;
DWORD dwCheckPoint;
DWORD dwWaitHint;
DWORD dwProcessId;
DWORD dwServiceFlags;
} SERVICE_STATUS_PROCESS, *LPSERVICE_STATUS_PROCESS;
成员
dwServiceType
服务的类型。 此成员可以是以下值之一。
如果服务类型SERVICE_WIN32_OWN_PROCESS或SERVICE_WIN32_SHARE_PROCESS,并且服务在 LocalSystem 帐户的上下文中运行,则还可以指定以下类型。
值 | 含义 |
---|---|
|
该服务可以与桌面交互。
有关详细信息,请参阅 Interactive Services。 |
dwCurrentState
服务的当前状态。 此成员可以是以下值之一。
dwControlsAccepted
服务接受的控制代码及其处理程序函数中的处理 (请参阅 Handler 和 HandlerEx) 。 用户界面进程可以通过在 ControlService 或 ControlServiceEx 函数中指定控件命令来控制服务。 默认情况下,所有服务都接受 SERVICE_CONTROL_INTERROGATE 值。
下面是控制代码。
控制代码 | 含义 |
---|---|
|
该服务是一个网络组件,可以在不停止和重启的情况下接受其绑定中的更改。
此控制代码允许服务接收 SERVICE_CONTROL_NETBINDADD、 SERVICE_CONTROL_NETBINDREMOVE、 SERVICE_CONTROL_NETBINDENABLE和 SERVICE_CONTROL_NETBINDDISABLE 通知。 |
|
该服务可以重新读取其启动参数,而无需停止和重启。
此控制代码允许服务接收 SERVICE_CONTROL_PARAMCHANGE 通知。 |
|
服务可以暂停并继续。
此控制代码允许服务接收 SERVICE_CONTROL_PAUSE 和 SERVICE_CONTROL_CONTINUE 通知。 |
|
该服务可以执行预执行任务。
此控制代码使服务能够接收 SERVICE_CONTROL_PRESHUTDOWN 通知。 请注意, ControlService 和 ControlServiceEx 无法发送此通知;只有系统可以发送它。 Windows Server 2003 和 Windows XP: 不支持此值。 |
|
系统关闭时,服务会收到通知。
此控制代码允许服务接收 SERVICE_CONTROL_SHUTDOWN 通知。 请注意, ControlService 和 ControlServiceEx 无法发送此通知;只有系统可以发送它。 |
|
服务可以停止。
此控制代码允许服务接收 SERVICE_CONTROL_STOP 通知。 |
此成员还可以包含以下扩展控制代码,这些代码仅受 HandlerEx 支持。 (请注意,这些控制代码不能由 ControlService 或 ControlServiceEx.)
dwWin32ExitCode
服务用于报告启动或停止时发生的错误的错误代码。 若要返回特定于服务的错误代码,服务必须将此值设置为 ERROR_SERVICE_SPECIFIC_ERROR ,以指示 dwServiceSpecificExitCode 成员包含错误代码。 当服务正在运行且正常终止时,服务应将此值设置为 NO_ERROR 。
dwServiceSpecificExitCode
服务启动或停止时发生错误时,服务返回的特定于服务的错误代码。 除非 dwWin32ExitCode 成员设置为 ERROR_SERVICE_SPECIFIC_ERROR,否则将忽略此值。
dwCheckPoint
服务在长时间启动、停止、暂停或继续操作期间定期递增以报告其进度的检查磅值。 例如,服务在启动时完成其初始化的每个步骤时,应递增此值。 在服务上调用操作的用户界面程序在长时间操作期间使用此值跟踪服务的进度。 此值无效,当服务没有挂起的启动、停止、暂停或继续操作时,此值应为零。
dwWaitHint
挂起的开始、停止、暂停或继续操作所需的估计时间(以毫秒为单位)。 在经过指定的时间之前,服务应使用递增的 dwCheckPoint 值或 dwCurrentState 中的更改对 SetServiceStatus 函数进行下一次调用。 如果 dwWaitHint 指定的时间量通过,且 dwCheckPoint 未递增或 dwCurrentState 未更改,则服务控制管理器或服务控制程序可以假定发生了错误,并且服务应停止。 但是,如果服务与其他服务共享进程,则服务控制管理器无法终止服务应用程序,因为它必须终止共享进程的其他服务。
dwProcessId
服务的进程标识符。
dwServiceFlags
此成员可以是以下值之一。
值 | 含义 |
---|---|
|
服务在不是系统进程的进程中运行,或者它未在运行。
如果服务在不是系统进程的进程中运行, 则 dwProcessId 为非零值。 如果服务未运行, 则 dwProcessId 为零。 |
|
服务在必须始终运行的系统进程中运行。 |
要求
最低受支持的客户端 | Windows XP [仅限桌面应用] |
最低受支持的服务器 | Windows Server 2003 [仅限桌面应用] |
标头 | winsvc.h (包括 Windows.h) |