示例#1
0
int CW32Service::ISRV_Run(void* pData)
{
  if ( !m_pLogic )
    return -1;

  // indicate whether the logic module can output to the console
  m_pLogic->HasConsole( m_bRunAsApp );

  if ( m_bRunAsApp )
  {
    Initialise(this);
  }
  else
  {
    if ( !OpenService() )
      return 0;

    SetInitProc( Initialise );
    ExecuteService();
  }

  return 0;
}
示例#2
0
//Service Main function
size_t WINAPI ServiceMain(
	_In_ DWORD argc, 
	_In_ LPTSTR *argv)
{
	ServiceStatusHandle = RegisterServiceCtrlHandlerW(SYSTEM_SERVICE_NAME, (LPHANDLER_FUNCTION)ServiceControl);
	if (!ServiceStatusHandle || !UpdateServiceStatus(SERVICE_START_PENDING, NO_ERROR, 0, 1U, UPDATE_SERVICE_TIME))
		return FALSE;

	ServiceEvent = CreateEventW(0, TRUE, FALSE, 0);
	if (!ServiceEvent || !UpdateServiceStatus(SERVICE_START_PENDING, NO_ERROR, 0, 2U, STANDARD_TIMEOUT) || !ExecuteService())
		return FALSE;

	ServiceCurrentStatus = SERVICE_RUNNING;
	if (!UpdateServiceStatus(SERVICE_RUNNING, NO_ERROR, 0, 0, 0))
		return FALSE;

	WaitForSingleObject(ServiceEvent, INFINITE);
	CloseHandle(ServiceEvent);
	return EXIT_SUCCESS;
}
示例#3
0
//Service Main function
size_t WINAPI ServiceMain(DWORD argc, LPTSTR *argv)
{
	hServiceStatus = RegisterServiceCtrlHandler(LOCALSERVERNAME, (LPHANDLER_FUNCTION)ServiceControl);
	if(!hServiceStatus || !UpdateServiceStatus(SERVICE_START_PENDING, NO_ERROR, 0, 1, TIME_OUT*3))
		return FALSE;

	hServiceEvent = CreateEvent(0, TRUE, FALSE, 0);
	if(!hServiceEvent || !UpdateServiceStatus(SERVICE_START_PENDING, NO_ERROR, 0, 2, TIME_OUT) || !ExecuteService())
		return FALSE;

	ServiceCurrentStatus = SERVICE_RUNNING;
	if(!UpdateServiceStatus(SERVICE_RUNNING, NO_ERROR, 0, 0, 0))
		return FALSE;

	WaitForSingleObject(hServiceEvent, INFINITE);
	CloseHandle(hServiceEvent);
	return EXIT_SUCCESS;
}