Пример #1
0
void CustomSigAbort(int nSig)
{
	gcTraceS("Sig: {0}", nSig);

	gcAssert(false);
	throw std::exception("sig abort");
}
Пример #2
0
void UiCoreRestart(const char* args)
{
	gcTraceS("Args: {0}", args);

	g_bRestart = true;

	if (args)
	{
		delete [] g_szArgs;
		size_t len = strlen(args);
		g_szArgs = new char[len+1];
		strcpy_s(g_szArgs, len+1, args);
		g_szArgs[len] = '\0';
	}
}
Пример #3
0
int main(int argc, char** argv)
{
#ifdef DEBUG
#if 0
	while (!IsDebuggerPresent())
		gcSleep( 500 );
#endif
#endif

	if (GetFileAttributes("desura_service_debug.txt") != 0xFFFFFFFF)
	{
		gcTraceS("Waiting for debugger");

		while (!IsDebuggerPresent())
			gcSleep( 500 );
	}

	if (argc >= 2 && strcmp(argv[1], "-exe")== 0)
	{
		if (g_ServiceApp.start(argc, argv))
		{
			printf("Service has started. Press any key to exit....\n");
			getchar();
		}
		else
		{
			printf("Failed to start service.\n");
		}

		g_ServiceApp.stop();
	}
	else
	{
		SERVICE_TABLE_ENTRY ServiceTable[2];
		ServiceTable[0].lpServiceName = SERVICE_NAME;
		ServiceTable[0].lpServiceProc = &ServiceMain;

		ServiceTable[1].lpServiceName = nullptr;
		ServiceTable[1].lpServiceProc = nullptr;

		g_StopEvent = CreateEvent(nullptr, false, false, nullptr);
		StartServiceCtrlDispatcher(ServiceTable);
		WaitForSingleObject(g_StopEvent, INFINITE);

		CloseHandle(g_StopEvent);
		g_StopEvent = nullptr;
	}
}