Esempio n. 1
0
int Main(HINSTANCE hInstance)
{
	WNDCLASSEX wcx;
	HWND       wnd;
	MSG        msg;

	if ((wnd = FindWindow(App.Class, App.Title)) != NULL) {
		/* reload config */
		PostMessage(wnd, WM_APP_RELOAD, 0, 0);
		return 0;
	}

	CoInitializeEx(0, COINIT_MULTITHREADED);
	CoInitializeSecurity(NULL, -1, NULL, NULL,
		RPC_C_AUTHN_LEVEL_DEFAULT, RPC_C_IMP_LEVEL_IMPERSONATE, NULL, EOAC_NONE, NULL);
	WinAPI_Initialize();
	Global_Initialize();
	Status_Initialize();
	Config_Initialize();

	SpecialKey_Initialize();

	ExtractIconEx(AppIcon.File, IsVistaOrGreater() ? AppIcon.Index.Vista : AppIcon.Index.XP,
		&Global.hIconLarge, &Global.hIconSmall, 1);

	ZeroMemory(&wcx, sizeof wcx);
	wcx.cbSize        = sizeof wcx;
	wcx.style         = CS_NOCLOSE;
	wcx.lpfnWndProc   = WndProc;
	wcx.hInstance     = hInstance;
	wcx.hCursor       = (HCURSOR)LoadImage(NULL, IDC_ARROW,
	                    IMAGE_CURSOR, 0, 0, LR_DEFAULTSIZE | LR_SHARED);
	wcx.lpszClassName = App.Class;
	wcx.hIcon         = Global.hIconLarge;
	wcx.hIconSm       = Global.hIconSmall;
	RegisterClassEx(&wcx);
	CreateWindowEx(0, wcx.lpszClassName, App.Title, WS_POPUP,
		CW_USEDEFAULT, 0, 10, 10, NULL, NULL, wcx.hInstance, NULL);
	while (GetMessage(&msg, NULL, 0, 0)) {
		TranslateMessage(&msg);
		DispatchMessage(&msg);
	}
	DestroyIcon(Global.hIconLarge);
	DestroyIcon(Global.hIconSmall);

	WinAPI_Uninitialize();
	CoUninitialize();
	return (int)msg.wParam;
}
Esempio n. 2
0
MI_Result Initialize()
{
    MI_Result r;
    static size_t nbufsize = 256;
    g_batch = Batch_New(64);
    if (!g_batch)
        return MI_RESULT_SERVER_LIMITS_EXCEEDED;

    g_dirpath = (char*)Batch_Get(g_batch, nbufsize);
    g_logfilepath = (char*)Batch_Get(g_batch, nbufsize);
    if (!g_logfilepath || !g_dirpath)
    {
        r = MI_RESULT_SERVER_LIMITS_EXCEEDED;
        goto error;
    }

    sprintf(g_dirpath, dirformat, gethomedir(), "indicationlog");
    if (Isdir(g_dirpath) == PAL_FALSE)
    {
        if (Mkdir(g_dirpath, 0777) != 0)
        {
            r = MI_RESULT_FAILED;
            goto error;
        }
    }
    sprintf(g_logfilepath, filenameformat, g_dirpath, "provider", "log");

#if !defined(_MSC_VER)
    {
        //
        // Delete file if larger than certain size
        //
        struct stat buf;
        if (stat(g_logfilepath, &buf) == 0)
        {
            if ( (unsigned long)buf.st_size > 0x800000UL )
                File_Remove(g_logfilepath);
        }
    }
#endif

    g_logfile = File_Open(g_logfilepath, "a+");
    if (!g_logfile)
    {
        r = MI_RESULT_FAILED;
        goto error;
    }

    Config_Initialize(&cfgTest_Indication);
    Config_Initialize(&cfgL_IndicationC1);
    Config_Initialize(&cfgL_IndicationC2);
    Config_Initialize(&cfgL_IndicationC3);
    Config_Initialize(&cfgR_IndicationC1);
    Config_Initialize(&cfgR_IndicationC2);
    Config_Initialize(&cfgR_IndicationC3);
    Config_Initialize(&cfgTest_Class);
    Config_Initialize(&cfgL_LifecycleC1);
    Config_Initialize(&cfgL_LifecycleC2);
    Config_Initialize(&cfgR_LifecycleC1);
    Config_Initialize(&cfgR_LifecycleC2);
    

    ReloadConfig();

    LOGMSG(("\r\n\r\n\r\n\r\n==================================================="));
    LOGMSG(("Initialize"));

    return MI_RESULT_OK;

error:
    if (g_logfile)
    {
        File_Close(g_logfile);
        g_logfile = NULL;
    }
    if (g_batch)
    {
        Batch_Delete(g_batch);
        g_batch = NULL;
    }
    return r;
}