kaeziparchivesupport.cpp

来自「zip解压源码.」· C++ 代码 · 共 96 行

CPP
96
字号
#include "KSCOM.h"
#include "KSMemory.h"
#include "KSMemoryImport.h"
#include "KSAssert.h"
#include "KSAssertImport.h"
#include "KSFile.h"
#include "KSFileImport.h"
#include "KSProvidePath.h"
#include "KSProvidePathImport.h"

static const int g_cnKSCOMCount = 4;

static KSCOM_CLIENT_INIT g_KSCOMInit[g_cnKSCOMCount] = {
    {
        false,  NULL,           NULL,
        false,  KSAssertInit,   KSAssertUnInit
    },
    {
        false,  NULL,           NULL, 
        false,  KSMemoryInit,   KSMemoryUnInit
    },
	{
        false,  NULL,           NULL,
        false,  KSFileInit,      KSFileUnInit
    },
    {
        false,  NULL,           NULL,
        false,  KSProvidePathInit,  KSProvidePathUnInit
    }
};


int KSCOMSTDMETHOD KSCOMComponentInit(void *pvContent)
{
    int i = 0;
    int Result = false;
    int nRetCode = false;

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

    Result = true;

Exit0:
    if (!Result)
    {
        for (i = g_cnKSCOMCount; i > 0; i--)
        {
            if (
                (NULL != g_KSCOMInit[i - 1].pfKSCOMClientUnInit) &&
                (g_KSCOMInit[i - 1].nInitFlag)
            )
            {
                g_KSCOMInit[i - 1].pfKSCOMClientUnInit();
                
                g_KSCOMInit[i - 1].nInitFlag = false;
            }
        }
    }

    return Result;
}


int KSCOMSTDMETHOD KSCOMComponentUnInit(void *pvContent)
{
    int i = 0;
    int Result = false;
    int nRetCode = false;

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

            g_KSCOMInit[i - 1].nInitFlag = false;
        }
    }

    Result = true;

Exit0:

    return Result;
}

⌨️ 快捷键说明

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