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:
ControlServiceEx function 的返回值不可靠,因为其服务所返回的退出代码也可能是 INVALID
服务不应返回 INVALID,因为会与 ControlServiceEx function 的函数失败返回值相同,从而导致应用程序逻辑错误
参数 dwServiceState 如为 NULL 则为向服务传递参数
ControlServiceEx function 仅将请求发送至指定服务,并不代表其服务会正确处理此请求
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;
}