⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 clientinit.cpp

📁 zip解压源码.
💻 CPP
字号:
#include "KSCOM.h"
#include "KSMemoryRegister.h"
#include "KSAssertRegister.h"
#include "KSFileRegister.h"
#include "KAEZipArchive.h"
#include "KAEZipArchiveImport.h"
#include "KAEZipArchiveRegister.h"
#include "ClientInit.h"


// =====================================================================================-
// *  Client Init Data Part
// *
// * typedef struct tagKSCOM_CLIENT_INIT{
// *     int nRegFlag;                                   // Register Flag
// *     KSCOMClientRegFun *pfKSCOMClientRegister;       // Register Function
// *     KSCOMClientUnRegFun *pfKSCOMClientUnRegister;   // UnRegister Function
// *     int nInitFlag;                                  // Initialize Flag
// *     KSCOMClientInitFun *pfKSCOMClientInit;          // Initialize Function
// *     KSCOMClientUnInitFun *pfKSCOMClientUnInit;      // UnInitialize Function
// * } KSCOM_CLIENT_INIT;
//
// =====================================================================================-

static const int g_cnKSCOMCount = 4;

static KSCOM_CLIENT_INIT g_KSCOMClientInit[g_cnKSCOMCount] = {
    {
        false,  KSAssertRegFactory,     KSAssertUnRegFactory,   
        false,  NULL,                   NULL
    },
    {
        false,  KSMemoryRegFactory,     KSMemoryUnRegFactory,   
        false,  NULL,                   NULL    
    },
        {  false, KSFileRegFactory, KSFileUnRegFactory,
          false, NULL,    NULL
        },
    {
        false,  KAEZipArchiveRegFile,         KAEZipArchiveUnRegFile,       
        false,  KAEZipArchiveInit,            KAEZipArchiveUnInit
        }       
};







// =====================================================================================-
//  Client Init Public Implement
// =====================================================================================-

static int RegisterComponent()
{
    int Result = false;
    KSCOMRESULT krRetCode = KSCOM_E_FAIL;
    
    for (int i = 0; i < g_cnKSCOMCount; i++)
    {
        if (g_KSCOMClientInit[i].pfKSCOMClientRegister != NULL)
        {
            krRetCode = g_KSCOMClientInit[i].pfKSCOMClientRegister();
            if (FAILED(krRetCode))
                goto Exit0;

            g_KSCOMClientInit[i].nRegFlag = true;
        }
    }

    Result = true;

Exit0:
    if (!Result)
    {
        for (int i = g_cnKSCOMCount; i > 0; i--)
        {
            if (g_KSCOMClientInit[i - 1].nRegFlag)
            {
                if (g_KSCOMClientInit[i - 1].pfKSCOMClientUnRegister != NULL)
                    g_KSCOMClientInit[i - 1].pfKSCOMClientUnRegister();
            }
        }
    }
    return Result;
}

static int UnRegisterComponent()
{
    for (int i = g_cnKSCOMCount; i > 0; i--)
    {
        if (g_KSCOMClientInit[i - 1].pfKSCOMClientUnRegister != NULL)
            g_KSCOMClientInit[i - 1].pfKSCOMClientUnRegister();
    }

    return true;
}


int ClientInitialize()
{
    int i = 0;
    int Result = false;
    int nRetCode = false;
    int nInitKCOMFlag = false;
    int nRegisterComponentFlag = false;

    KSCOMRESULT kr = KSCOM_S_OK;

    kr = KSCoInitialize();
    if (FAILED(kr))
        goto Exit0;
    
    nInitKCOMFlag = true;

    nRetCode = RegisterComponent();
    if (!nRetCode)
        goto Exit0;

    nRegisterComponentFlag = true;

    for (i = 0; i < g_cnKSCOMCount; i++)
    {
        if (NULL != g_KSCOMClientInit[i].pfKSCOMClientInit)
        {
            nRetCode = g_KSCOMClientInit[i].pfKSCOMClientInit();
            if (!nRetCode)
                goto Exit0;
            g_KSCOMClientInit[i].nInitFlag = true;
        }
    }
    
    Result = true;

Exit0:

    if (!Result)
    {
        for (i = g_cnKSCOMCount; i > 0; i--)
        {
            if (g_KSCOMClientInit[i - 1].nInitFlag)
            {
                if (NULL != g_KSCOMClientInit[i - 1].pfKSCOMClientUnInit)
                    g_KSCOMClientInit[i - 1].pfKSCOMClientUnInit();
            }
        }

        if (nRegisterComponentFlag)
            UnRegisterComponent();

        if (nInitKCOMFlag)
            KSCoUnInitialize();
    }

    return Result;
}


int ClientUnInitialize()
{
    int Result = false;
    int nRetCode = false;
    KSCOMRESULT kr = KSCOM_S_OK;

    for (int i = g_cnKSCOMCount; i > 0; i--)
    {
        if (NULL != g_KSCOMClientInit[i - 1].pfKSCOMClientUnInit)
        {
            nRetCode = g_KSCOMClientInit[i - 1].pfKSCOMClientUnInit();
            if (!nRetCode)
                goto Exit0;
        }
    }

    nRetCode = UnRegisterComponent();
    if (!nRetCode)
        goto Exit0;
    
    kr = KSCoUnInitialize();
    if (FAILED(kr))
        goto Exit0;

    Result = true;

Exit0:

    return Result;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -