Ich habe Fensterdienst entwickelt. Ich möchte wissen, wie ich benachrichtigt werden kann, wenn der Dienst getötet wird. Momentan erhalte ich eine Benachrichtigung, wenn der Dienst gestoppt wird.Wie man Ereignis behandelt, wenn Fensterdienst getötet
----service startup code---
inline void CServiceModule::Init(_ATL_OBJMAP_ENTRY* p, HINSTANCE h, UINT nServiceNameID, const GUID* plibid)
{
CComModule::Init(p, h, plibid);
m_bService = TRUE;
m_hInstance = h;
if(m_szServiceName.size()==0)
{
string strServiceName = GetServiceName();
m_szServiceName = strServiceName;
}
// set up the initial service status
m_hServiceStatus = NULL;
m_status.dwServiceType = SERVICE_WIN32_OWN_PROCESS;
m_status.dwCurrentState = SERVICE_STOPPED;
m_status.dwControlsAccepted = SERVICE_ACCEPT_PRESHUTDOWN;
m_status.dwWin32ExitCode = 0;
m_status.dwServiceSpecificExitCode = 0;
m_status.dwCheckPoint = 0;
m_status.dwWaitHint = 0;
}
---Handler----
inline void CServiceModule::Handler(DWORD dwOpcode)
{
switch (dwOpcode)
{
case SERVICE_CONTROL_SHUTDOWN:
case SERVICE_CONTROL_STOP:
SetServiceStatus(SERVICE_STOP_PENDING);
PostThreadMessage(dwThreadID, WM_QUIT, 0, 0);
break;
case SERVICE_CONTROL_PAUSE:
break;
case SERVICE_CONTROL_CONTINUE:
break;
case SERVICE_CONTROL_INTERROGATE:
break;
/* case SERVICE_CONTROL_SHUTDOWN:
break;*/
default:
LogEvent(_T("Bad service request"));
}
}
Ich erhalte Benachrichtigung SERVICE_CONTROL_STOP
wenn der Dienst beendet wird. Bitte schlagen Sie vor, welchen Handler ich verwenden sollte, wenn Service getötet wird.
Sie haben eine Anfrage zu stoppen - 'SERVICE_CONTROL_STOP' und behandeln Sie es. * wenn Service getötet wird * - was meinst du darunter? jemand beendet den Service-Prozess? in diesem Fall Service natürlich nicht notify – RbMm