一天时间一直在调试和查找资料,调试不出来啊,快纠结死拉,大哥哥大姐姐都帮忙看一下
SERVICE_ACCEPT_SESSIONCHANGE状态都已经设定了,就是接不到SERVICE_CONTROL_SESSIONCHANGE消息VOID ServiceHandler(DWORD controlCode,
DWORD dwEventType,
LPVOID lpEventData,
LPVOID lpContext)
{
WriteToLog("ServiceHandler");
switch(controlCode)
{
case SERVICE_CONTROL_SESSIONCHANGE:
switch(dwEventType)
{
case WTS_SESSION_LOGOFF:
WriteToLog("logoff");
break;
case WTS_SESSION_LOGON:
WriteToLog("logon");
break;
case WTS_SESSION_LOCK:
WriteToLog("lock");
break;
case WTS_SESSION_UNLOCK:
WriteToLog("unlock");
break;
}
break;
case SERVICE_CONTROL_STOP:
ExitProcess(0);
}
return;
}
VOID WINAPI ServiceMain(DWORD dwNumServicesArgs, PSTR *ppcServiceArgVectors)
{
initFunctions();
SERVICE_STATUS_HANDLE hService = NULL;
SERVICE_STATUS SrvStatus = { 0 };
hService = RegisterServiceCtrlHandlerA("ixil",ServiceHandler);
SrvStatus.dwServiceType = SERVICE_WIN32;
SrvStatus.dwControlsAccepted=SERVICE_ACCEPT_STOP |SERVICE_ACCEPT_SESSIONCHANGE;
SrvStatus.dwCurrentState = SERVICE_RUNNING;
SetServiceStatus(hService, &SrvStatus);
CreateThread(NULL, 0, ThreadFunc, 0, 0, 0);
return;
}int _tmain(int argc, _TCHAR* argv[]){
SERVICE_TABLE_ENTRYA scArrTable[] =
{
{ "ixil", ServiceMain },
{ NULL, NULL }
};
StartServiceCtrlDispatcherA(scArrTable);
return 0;
}
SERVICE_ACCEPT_SESSIONCHANGE状态都已经设定了,就是接不到SERVICE_CONTROL_SESSIONCHANGE消息VOID ServiceHandler(DWORD controlCode,
DWORD dwEventType,
LPVOID lpEventData,
LPVOID lpContext)
{
WriteToLog("ServiceHandler");
switch(controlCode)
{
case SERVICE_CONTROL_SESSIONCHANGE:
switch(dwEventType)
{
case WTS_SESSION_LOGOFF:
WriteToLog("logoff");
break;
case WTS_SESSION_LOGON:
WriteToLog("logon");
break;
case WTS_SESSION_LOCK:
WriteToLog("lock");
break;
case WTS_SESSION_UNLOCK:
WriteToLog("unlock");
break;
}
break;
case SERVICE_CONTROL_STOP:
ExitProcess(0);
}
return;
}
VOID WINAPI ServiceMain(DWORD dwNumServicesArgs, PSTR *ppcServiceArgVectors)
{
initFunctions();
SERVICE_STATUS_HANDLE hService = NULL;
SERVICE_STATUS SrvStatus = { 0 };
hService = RegisterServiceCtrlHandlerA("ixil",ServiceHandler);
SrvStatus.dwServiceType = SERVICE_WIN32;
SrvStatus.dwControlsAccepted=SERVICE_ACCEPT_STOP |SERVICE_ACCEPT_SESSIONCHANGE;
SrvStatus.dwCurrentState = SERVICE_RUNNING;
SetServiceStatus(hService, &SrvStatus);
CreateThread(NULL, 0, ThreadFunc, 0, 0, 0);
return;
}int _tmain(int argc, _TCHAR* argv[]){
SERVICE_TABLE_ENTRYA scArrTable[] =
{
{ "ixil", ServiceMain },
{ NULL, NULL }
};
StartServiceCtrlDispatcherA(scArrTable);
return 0;
}
[in] DWORD fdwControl
);
类型
RegisterServiceCtrlHandlerEx 对应才是 DWORD WINAPI HandlerEx(
[in] DWORD dwControl,
[in] DWORD dwEventType,
[in] LPVOID lpEventData,
[in] LPVOID lpContext
);
类型
是否因为这个不能收到?
void WINAPI ServiceControl(DWORD dwControl);