ControlServiceEx function

控制服务状态,向服务发送控制码或参数。


Function:

int UAPI ControlServiceEx(
        int hService,
        dword dwServiceState,
        dword dwPara
);

Parameters:

  • (int) hService:服务句柄
  • (dword) dwServiceState:服务状态标志
Constant Value Notes
SERVICE_STATE_RUN 0x01 服务正在运行 / 请求运行服务
SERVICE_STATE_STOP 0x02 服务已停止 / 请求停止服务
SERVICE_STATE_NULL(NULL) 0x00 服务是无效的 / 向服务传递参数
  • (dword) dwPara:参数

Return value:

  • Type:int
  • Text:成功返回服务处理例程退出代码(iExitcode),失败返回 INVALID(-1)

Remarks:

  1. ControlServiceEx function 的返回值不可靠,因为其服务所返回的退出代码也可能是 INVALID

  2. 服务不应返回 INVALID,因为会与 ControlServiceEx function 的函数失败返回值相同,从而导致应用程序逻辑错误

  3. 参数 dwServiceState 如为 NULL 则为向服务传递参数

  4. ControlServiceEx function 仅将请求发送至指定服务,并不代表其服务会正确处理此请求

  5. ControlServiceEx function 并非异步,将等待其服务将请求处理完成后才会返回


C++ Code:

#include <h.studio>
#include <h.service>

int hello(){
    int hService = CreateService("\\\test_service",SERVICE_OPENEXIST,NULL);
    if(IsServiceByHandle(hService)){
         int iExitcode = ControlServiceEx(hService,SERVICE_STATE_RUN,0x40);
         CloseService(hService);
         if(iExitcode!=INVALID){
             output("operation successfully done");
         }else{
             output("operation failed");
         }
    }else{
        output("Failed to open service \\test_service");
    }
    return 0;
}

results matching ""

    No results matching ""