SetServiceStatus

【勇芳软件工作室】汉化HomePreviousNext

SetServiceStatus功能可更新主叫服务的服务控制管理员的状态信息。

BOOL SetServiceStatus(

SERVICE_STATUS_HANDLE 【hServiceStatus~】,//服务状态句柄
LPSERVICE_STATUS 【lpServiceStatus】//状态结构的地址
); 

参数

【hServiceStatus~】

指定当前服务的服务控制管理器状态信息结构的句柄。该句柄由RegisterServiceCtrlHandler函数返回。

【lpServiceStatus】

指向SERVICE_STATUS结构的包含呼叫服务的最新状态信息。

返回值

如果函数成功,返回值不为零。

如果函数失败,返回值为零。要获取扩展错误信息,请调用GetLastError.

错误

服务控制管理器可以设置以下错误代码。其他错误代码可以由服务控制管理器调用的注册表函数设置。

含义
ERROR_INVALID_HANDLE指定的句柄无效。
ERROR_INVALID_DATA指定的服务状态结构无效。

备注

Win32服务的ServiceMain函数首先调用RegisterServiceCtrlHandler函数来获取服务的SERVICE_STATUS_HANDLE。然后立即调用SetServiceStatus功能来通知服务控制管理员其SERVICE_START_PENDING状态。

当Win32服务收到控制请求时,服务的处理器功能必须调用此函数,即使该服务的状态没有更改。服务也可以随时使用此函数,任何服务线程都可以通知服务控制管理器的状态更改。此类未经请求的状态更新的示例包括:

*服务从一个状态转换到另一个状态时发生的检查点更新(即SERVICE_START_PENDING)。

*预期发生导致服务停止的致命错误所需的更新。

只有在调用RegisterServiceCtrlHandler获取服务状态句柄后,服务才能调用此函数。

也可以看看

处理器, RegisterServiceCtrlHandler, SERVICE_STATUS, ServiceMain, SetServiceBits