亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? servercom.cxx

?? 開源CORBA中間件
?? CXX
字號(hào):
/*+----------------------------------------------------------------------------

USAGE:      serverCOM /REGSERVER   - Installs registry entries for the server.
            serverCOM /UNREGSERVER - Removes registry entries for the server.
            serverCOM -Embedding   - Server was auto-started by OLE.

COMMENTS:   The server program must be installed before running the client.
            Run serverCOM.exe /REGSERVER to install the server program.

-----------------------------------------------------------------------------*/
#include <windows.h>
#include <stdio.h>
#include "account.h"

void    PrintErrorMessage(HRESULT hr);
HRESULT RegisterClassFactory();
HRESULT RevokeClassFactory();

//Prototypes for local functions
HRESULT RegisterLocalServer(REFCLSID rclsid);
HRESULT RegisterProxyDll(const char *pszProxyDll);
HRESULT UnregisterLocalServer(REFCLSID rclsid);
HRESULT UnregisterProxyDll(const char *pszProxyDll);


extern "C" const CLSID CLSID_Account;

long    g_LockCount   = 0;
long    g_ObjectCount = 0;

//+---------------------------------------------------------------------------
//
//  Function:   DecrementLockCount
//
//  Synopsis:   Decrements the lock count.  The lock count controls the 
//              registration of the class factory in the class table.
//              DecrementLockCount revokes the class factory when the 
//              lock count is zero.
//
//  Called By:  ~CAccount, IClassFactory::LockServer(FALSE).
//
//  See Also:   ObjectCreated, ObjectDestroyed, IncrementLockCount.
//
//----------------------------------------------------------------------------
void DecrementLockCount()
{
    //Decrement the lock count.
    if(InterlockedDecrement(&g_LockCount) == 0)
    {
        //When the lock count is decremented to zero,
        //revoke the class factory.
        RevokeClassFactory();
    }
}

//+---------------------------------------------------------------------------
//
//  Function:   IncrementLockCount
//
//  Synopsis:   Increments the lock count.  The lock count controls the 
//              registration of the class factory in the class table.
//              If necessary, IncrementLockCount will reregister the class
//              factory in the class table.
//
//  Called By:  CAccount, IClassFactory::LockServer(TRUE).
//
//  See Also:   DecrementLockCount, ObjectCreated, ObjectDestroyed.
//
//----------------------------------------------------------------------------
void IncrementLockCount()
{
    if(g_LockCount == 0)
    {
        //Increment the lock count.
        InterlockedIncrement(&g_LockCount);

        //Reregister the class factory if necessary.
        RegisterClassFactory();
    }
    else
    {
        //Increment the lock count.
        InterlockedIncrement(&g_LockCount);
    }
}


//+---------------------------------------------------------------------------
//
//  Function:   main
//
//  Synopsis:   Main entry point for the server application.  This function 
//              initializes the server and processes the message loop.
//
//----------------------------------------------------------------------------
int _cdecl main(int argc, char *argv[])
{
    HRESULT hr = S_OK;
    int i;
    BOOL fRegisterServer = FALSE;
    BOOL fUnregisterServer = FALSE;
    BOOL fEmbedding = FALSE;
    BOOL fHelp = FALSE;
    MSG msg;

    // Parse each item, skip the command name
    for (i = 1; i < argc; i++)
    {
        if (stricmp( argv[i], "-Embedding" ) == 0)
        {
            //This server has been activated by OLE.
            fEmbedding = TRUE;
        }
        else if (stricmp( argv[i], "/REGSERVER" ) == 0)
        {
            fRegisterServer = TRUE;
        }
        else if (stricmp( argv[i], "/UNREGSERVER" ) == 0)
        {
            fUnregisterServer = TRUE;
        }
        else
        {
            fHelp = TRUE;
        }
    }

    if(fHelp == TRUE)
        {
        printf("USAGE: server /REGSERVER   - Installs server in the registry.\n");
        printf("       server /UNREGSERVER - Removes server from the registry.\n");
        printf("       server -Embedding   - Server was auto-started by OLE.\n");
        return 0;
    }
    else if(fUnregisterServer == TRUE)
    {
        hr = UnregisterLocalServer(CLSID_Account);
        if(FAILED(hr))
        {
            printf("Failed to remove local server from the registry.\n");
            PrintErrorMessage(hr);
        }

        hr = UnregisterProxyDll("account.dll");
        if(FAILED(hr))
        {
            printf("Failed to remove proxy DLL from the registry.\n");
            PrintErrorMessage(hr);
        }
        return 0;
    }
    

    //Install the local server in the registry.
    hr = RegisterLocalServer(CLSID_Account);
    if(FAILED(hr))
    {
        printf("Failed to install local server in the registry.\n");
        PrintErrorMessage(hr);
    }

    //Install the proxy DLL in the registry.
    hr = RegisterProxyDll("account.dll");
    if(FAILED(hr))
    {
        printf("Failed to install proxy DLL in the registry.\n");
        PrintErrorMessage(hr);
    }

    if(fRegisterServer == TRUE)
        return 0;

  
    //
    // Initialize OLE before calling any other OLE functions.
    //

    hr = CoInitialize(NULL);

    if(SUCCEEDED(hr))
    {   
        hr = RegisterClassFactory();

        if(SUCCEEDED(hr))
        {
            printf("Waiting for client to connect...\n");
            // Main message loop.  We will remain in the message loop 
            // until we get a WM_QUIT message.
    	    while (GetMessage(&msg, NULL, 0, 0))
    	    {
        	    TranslateMessage(&msg);
        	    DispatchMessage(&msg);
        	}

            //If the class factory is still registered in the 
            //class table, revoke it before we shut down.
            RevokeClassFactory();
	    }
        else
        {
            printf("Failed to register class factory.\n");
            PrintErrorMessage(hr);
        }
        CoUninitialize();
    }
    else
    {
        printf("CoInitialize failed.\n");
        PrintErrorMessage(hr);
    }

    return 0;
}


//+---------------------------------------------------------------------------
//
//  Function:   ObjectCreated
//
//  Synopsis:   Increments the object count controlling the main message loop
//              of the server process.  
//
//  Called By:  CAccount, CAccountFactory.
//
//  See Also:   DecrementLockCount, IncrementLockCount, ObjectDestroyed.
//
//----------------------------------------------------------------------------
void ObjectCreated()
{
    InterlockedIncrement(&g_ObjectCount);
}


//+---------------------------------------------------------------------------
//
//  Function:   ObjectDestroyed
//
//  Synopsis:   Decrements the object count controlling the main message loop 
//              of the server process.  When the object count is decremented 
//              to zero, we post a WM_QUIT message.  The main message loop will
//              exit and terminate the server process.
//
//  Called By:  ~CAccount, ~CAccountFactory.
//
//  See Also:   DecrementLockCount, IncrementLockCount, ObjectCreated.
//
//----------------------------------------------------------------------------
void ObjectDestroyed()
{
    if(InterlockedDecrement(&g_ObjectCount) == 0)
    {
        //When the last object is released, post a quit message.
        PostQuitMessage(0);
    }
}

  
//+---------------------------------------------------------------------------
//
//  Function:   RegisterLocalServer
//
//  Synopsis:   Creates a registry key for a local server.
//
//  Parameters: rclsid - Supplies the class ID of the local server.
//
//----------------------------------------------------------------------------
HRESULT RegisterLocalServer(REFCLSID rclsid)
{
    HRESULT hr;
    LONG error;
    HKEY hKeyCLSID;         // key for ...\Classes\CLSID
    HKEY hKeyClassID;
    HKEY hKey;              // current key
    DWORD dwDisposition;
    char szServer[MAX_PATH];
    char szClassID[39];
    unsigned long length;

    length = GetModuleFileNameA(0, szServer, sizeof(szServer));

    if(length == 0)
    {
        hr = HRESULT_FROM_WIN32(GetLastError());
        return hr;
    }

    //create the CLSID key
    error = RegCreateKeyExA(
            HKEY_CLASSES_ROOT, 
            "CLSID",
            0, 
            "REG_SZ", 
            REG_OPTION_NON_VOLATILE,
            KEY_ALL_ACCESS,
            0,
            &hKeyCLSID,
            &dwDisposition);

    if(!error)
    {
        //convert the class ID to a registry key name.
        sprintf(szClassID, "{%08lX-%04X-%04X-%02X%02X-%02X%02X%02X%02X%02X%02X}",
                rclsid.Data1, rclsid.Data2, rclsid.Data3,
                rclsid.Data4[0], rclsid.Data4[1],
                rclsid.Data4[2], rclsid.Data4[3],
                rclsid.Data4[4], rclsid.Data4[5],
                rclsid.Data4[6], rclsid.Data4[7]);
  
        //create key for the server class
        error = RegCreateKeyExA(hKeyCLSID, 
                                szClassID,
                                0, 
                                "REG_SZ", 
                                REG_OPTION_NON_VOLATILE,
                                KEY_ALL_ACCESS,
                                0,
                                &hKeyClassID,
                                &dwDisposition);

        if(!error)
        {
            //create LocalServer32 key.
            error = RegCreateKeyExA(hKeyClassID,           
                                    "LocalServer32",
                                    0, 
                                    "REG_SZ", 
                                    REG_OPTION_NON_VOLATILE,
                                    KEY_ALL_ACCESS,
                                    0,            
                                    &hKey,
                                    &dwDisposition);

            if(!error)
            {
                //Set the server name.
                error = RegSetValueExA(hKey, 
                                       "", 
                                       0, 
                                       REG_SZ, 
                                       (const unsigned char *)szServer,
                                       strlen(szServer) + 1);

                RegFlushKey(hKey);
                RegCloseKey(hKey);
            }
            RegCloseKey(hKeyClassID);
        }
        RegCloseKey(hKeyCLSID);
    }

    if(!error)
        hr = S_OK;
    else
        hr = HRESULT_FROM_WIN32(error);

    return hr;
}


//+---------------------------------------------------------------------------
//
//  Function:   RegisterProxyDll
//
//  Synopsis:   Creates registry entries for the interfaces contained in a 
//              proxy DLL.  
//
//  Parameters: pszProxyDll - Supplies the filename of the proxy DLL.
//
//  Notes:      RegisterProxyDll calls the DllRegisterServer function 
//              exported from the proxy DLL.
//
//----------------------------------------------------------------------------
HRESULT RegisterProxyDll(const char *pszProxyDll)
{
    HRESULT hr;
    HINSTANCE hProxyDll;
    HRESULT (STDAPICALLTYPE *pfnDllRegisterServer)();
 
    hProxyDll = LoadLibraryA(pszProxyDll);
    
    if(hProxyDll != 0)
    {
        pfnDllRegisterServer = (HRESULT (STDAPICALLTYPE *)())
            GetProcAddress(hProxyDll, "DllRegisterServer");
        
        if(pfnDllRegisterServer != 0)
            hr = (*pfnDllRegisterServer)();
        else
            hr = HRESULT_FROM_WIN32(GetLastError());

        FreeLibrary(hProxyDll);
    }
    else
    {
        hr = HRESULT_FROM_WIN32(GetLastError());
    }

    return hr;
}



//+---------------------------------------------------------------------------
//
//  Function:   UnregisterLocalServer
//
//  Synopsis:   Removes the registry key for a local server.
//
//  Parameters: rclsid - Supplies the class ID of the local server.
//
//----------------------------------------------------------------------------
HRESULT UnregisterLocalServer(REFCLSID rclsid)
{
    HRESULT hr;
    HKEY hKeyCLSID;
    HKEY hKeyClassID;
    long error;
    char szClassID[39];

    //open the CLSID key
    error = RegOpenKeyExA(
        HKEY_CLASSES_ROOT, 
        "CLSID",
        0, 
        KEY_ALL_ACCESS,
        &hKeyCLSID);

    if(!error)
    { 
    //convert the class ID to a registry key name.
    sprintf(szClassID, "{%08lX-%04X-%04X-%02X%02X-%02X%02X%02X%02X%02X%02X}",
            rclsid.Data1, rclsid.Data2, rclsid.Data3,
            rclsid.Data4[0], rclsid.Data4[1],
            rclsid.Data4[2], rclsid.Data4[3],
            rclsid.Data4[4], rclsid.Data4[5],
            rclsid.Data4[6], rclsid.Data4[7]);

        //open registry key for class ID string
        error = RegOpenKeyExA(
            hKeyCLSID, 
            szClassID,
            0, 
            KEY_ALL_ACCESS,
            &hKeyClassID);

        if(!error)
        {
            //delete LocalServer32 key. 
            error = RegDeleteKeyA(hKeyClassID, "LocalServer32");
            RegCloseKey(hKeyClassID);          
        }

        error = RegDeleteKeyA(hKeyCLSID, szClassID);
        RegCloseKey(hKeyCLSID);
    }

    if(!error)
        hr = S_OK;
    else
        hr = HRESULT_FROM_WIN32(error);

    return hr;
}


//+---------------------------------------------------------------------------
//
//  Function:   UnregisterProxyDll
//
//  Synopsis:   Removes registry entries for the interfaces contained in a 
//              proxy DLL.  
//
//  Parameters: pszProxyDll - Supplies the filename of the proxy DLL.
//
//  Notes:      UnregisterProxyDll calls the DllUnregisterServer function 
//              exported from the proxy DLL.
//
//----------------------------------------------------------------------------
HRESULT UnregisterProxyDll(const char *pszProxyDll)
{
    HRESULT hr;
    HINSTANCE hProxyDll;
    HRESULT (STDAPICALLTYPE *pfnDllUnregisterServer)();
    
    hProxyDll = LoadLibraryA(pszProxyDll);
    
    if(hProxyDll != 0)
    {
        pfnDllUnregisterServer = (HRESULT (STDAPICALLTYPE *)())
            GetProcAddress(hProxyDll, "DllUnregisterServer");
        
        if(pfnDllUnregisterServer != 0)
            hr = (*pfnDllUnregisterServer)();
        else
            hr = HRESULT_FROM_WIN32(GetLastError());
    
        FreeLibrary(hProxyDll);
    }
    else
    {
        hr = HRESULT_FROM_WIN32(GetLastError());
    }

    return hr;
}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人18视频日本| 欧美色图免费看| 在线欧美日韩国产| 欧美成人r级一区二区三区| 国产精品无人区| 奇米综合一区二区三区精品视频| 成人激情校园春色| 精品国产一区二区三区av性色| 亚洲黄色av一区| 成人激情免费网站| 久久免费国产精品| 日韩福利电影在线| 欧美探花视频资源| 综合久久综合久久| 国产精品一区二区你懂的| 成人动漫一区二区在线| 精品国产乱码久久久久久图片| 亚洲一区中文在线| 色综合欧美在线| 国产欧美精品一区二区色综合朱莉 | 99久久免费国产| 久久久久97国产精华液好用吗| 美腿丝袜亚洲色图| 欧美一区二区观看视频| 三级久久三级久久| 在线观看视频一区二区 | 中文字幕av免费专区久久| 免费久久精品视频| 欧美一区二区私人影院日本| 午夜久久久久久久久| 91久久精品国产91性色tv| 国产精品成人一区二区艾草| 成人免费va视频| 欧美高清在线一区| 国产高清不卡一区二区| 久久精品日产第一区二区三区高清版 | 精品一区二区三区日韩| 日韩丝袜情趣美女图片| 日韩成人免费在线| 日韩三级视频在线观看| 日韩av不卡一区二区| 日韩免费在线观看| 国产一区欧美二区| 国产欧美va欧美不卡在线| 成人午夜免费av| 国产精品国产三级国产aⅴ入口 | 蜜桃av一区二区| 久久综合丝袜日本网| 高潮精品一区videoshd| 中文字幕日韩一区| 欧美日韩免费观看一区三区| 日精品一区二区| 欧美精品一区二| 国产91精品免费| 亚洲美腿欧美偷拍| 欧美日韩国产一级片| 美女被吸乳得到大胸91| 久久夜色精品国产噜噜av| 国产91精品入口| 亚洲国产精品一区二区久久恐怖片| 538在线一区二区精品国产| 国产精品白丝jk白祙喷水网站| 欧美国产欧美综合| 在线观看日韩电影| 精品午夜一区二区三区在线观看| 久久先锋资源网| 日韩三级电影网址| 国产精品亚洲а∨天堂免在线| 亚洲欧美在线高清| 欧美年轻男男videosbes| 国产一区二区三区在线观看免费视频 | 中文字幕乱码久久午夜不卡 | 亚洲午夜国产一区99re久久| 欧美成人一区二区三区| 99久久久无码国产精品| 日本美女视频一区二区| 国产精品日韩成人| 91麻豆精品国产综合久久久久久 | 国产欧美一区二区精品性| 色94色欧美sute亚洲线路一久| 日本不卡一区二区| 中文字幕综合网| 亚洲精品一区二区三区福利| 欧美网站一区二区| 成人免费观看视频| 蜜臀国产一区二区三区在线播放| 亚洲色欲色欲www| 国产清纯白嫩初高生在线观看91 | 成人精品视频一区| 美腿丝袜亚洲三区| 亚洲已满18点击进入久久| 久久久综合视频| 91精品国产免费| 在线免费一区三区| 99久久婷婷国产| 成人美女视频在线观看| 久久精品国产网站| 午夜欧美2019年伦理 | 国产亚洲自拍一区| 日韩欧美在线综合网| 欧美性一二三区| 日韩精品一区二区三区四区| 在线观看亚洲精品| 91视频91自| 99久久婷婷国产综合精品| 国产成人福利片| 国产精品1024久久| 久久99精品久久久久久动态图| 日韩精品一区第一页| 亚洲123区在线观看| 亚洲综合免费观看高清在线观看| 最新国产成人在线观看| 国产视频一区二区三区在线观看 | 国产日韩av一区| 欧美tickling网站挠脚心| 日韩免费观看高清完整版在线观看| 在线免费不卡电影| 91视频.com| 欧美最猛性xxxxx直播| 91九色02白丝porn| 一本到不卡免费一区二区| 91免费观看在线| 不卡免费追剧大全电视剧网站| 成人免费福利片| 成人国产精品视频| 97久久精品人人澡人人爽| 91黄视频在线观看| 欧美视频一区二区| 91精品国产综合久久福利软件 | 在线视频你懂得一区| 日本道色综合久久| 欧美亚洲免费在线一区| 欧美影院一区二区三区| 91国在线观看| 91麻豆精品国产91| 精品成人a区在线观看| 欧美国产97人人爽人人喊| 亚洲欧美视频在线观看| 亚洲一区二区三区四区五区中文| 日日噜噜夜夜狠狠视频欧美人| 久久精品国产免费看久久精品| 欧洲色大大久久| 欧美日韩成人在线| 久久婷婷色综合| 亚洲欧美经典视频| 天天操天天色综合| 国产99一区视频免费| 色婷婷av一区二区三区软件 | 精品免费国产一区二区三区四区| 国产欧美日韩久久| 亚洲成人免费观看| 国产成人精品免费一区二区| 色综合久久综合中文综合网| 日韩精品一区二区在线| 亚洲欧美另类久久久精品2019| 久久国产精品第一页| 91在线porny国产在线看| 69av一区二区三区| 国产精品国产自产拍高清av王其 | 亚洲综合成人在线| 国产老妇另类xxxxx| 欧美综合亚洲图片综合区| 亚洲精品一区二区三区四区高清| 亚洲免费资源在线播放| 国产一区二区三区四区五区美女 | 欧美一区二区三区精品| 国产精品久久久久久妇女6080 | 亚洲免费看黄网站| 美女视频黄久久| 97se亚洲国产综合在线| 日韩免费性生活视频播放| 亚洲欧美成人一区二区三区| 久久66热偷产精品| 欧美视频一二三区| 亚洲欧美一区二区不卡| 国产精品一级二级三级| 欧美日韩电影一区| 中国色在线观看另类| 久久99精品久久久久婷婷| 欧美午夜不卡在线观看免费| 国产精品久久久久永久免费观看| 麻豆91精品91久久久的内涵| 欧美日韩夫妻久久| 一二三区精品视频| 99久久婷婷国产综合精品| 一区二区三区日韩欧美精品| 高清不卡一二三区| 久久久精品tv| 狠狠色丁香久久婷婷综合丁香| 制服丝袜亚洲播放| 亚洲午夜精品久久久久久久久| 91美女在线看| 1000精品久久久久久久久| 国产成人精品免费一区二区| 久久亚洲一区二区三区明星换脸| 久久福利视频一区二区| 欧美精品三级在线观看| 三级精品在线观看| 日韩一区二区三区视频在线| 日本麻豆一区二区三区视频|