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

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

?? kaeziparchiveimplement.cpp

?? zip解壓源碼.
?? CPP
?? 第 1 頁 / 共 5 頁
字號(hào):
#include "stdafx.h"
#include "KSFileStdImport.h"
#include "KSMemoryImport.h"
#include "KSProvidePathImport.h"
#include "KAEZipArchive.h"
#include "KAEZipArchiveImplement.h"

#include "KString.h"
#include "KAVqsort.h"
#include "fnsplit.h"

// =========================================================================
// *                 COM Component Implement Public Part                   *
// =========================================================================

HRESULT STDMETHODCALLTYPE KAEZipArchive::QueryInterface( 
    /* [in] */ REFIID riid,
    /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject)
{
    return m_pUnknownOuter->QueryInterface(riid, ppvObject);
}
                                          
ULONG STDMETHODCALLTYPE KAEZipArchive::AddRef(void)
{                                          
    return m_pUnknownOuter->AddRef();
}
    
ULONG STDMETHODCALLTYPE KAEZipArchive::Release(void)
{
    return m_pUnknownOuter->Release(); 
}

// =========================================================================
// *                        Class Implement Part                           *
// =========================================================================


HRESULT STDMETHODCALLTYPE KAEZipArchive::Init(/*[in]*/ void *pvContext)
{
    m_piArchiveCallBack = NULL;

    return KSCOM_S_OK;
}

HRESULT STDMETHODCALLTYPE KAEZipArchive::UnInit(void)
{
    if(m_piArchiveCallBack)
    {
        m_piArchiveCallBack->Release();
        m_piArchiveCallBack = NULL;
    }

    return KSCOM_S_OK;
}

HRESULT STDMETHODCALLTYPE KAEZipArchive::SetCallBackFunc(
    /* [in] */ IKAEArchiveCallBack __RPC_FAR *piArchiveCallBack
)
{
    piArchiveCallBack->AddRef();
    m_piArchiveCallBack = piArchiveCallBack;

    return KSCOM_S_OK;
}

HRESULT STDMETHODCALLTYPE KAEZipArchive::Extract(
    /*[in]*/ int nArchivePathNameLen,
    /*[in,size_is(nArchivePathNameLen)]*/ char szArchivePathName[]
) 
{
    KSCOMRESULT krResult = KSCOM_E_FAIL;

    if(initialization(szArchivePathName) == 0)
        goto Exit0;

    scan_zip();

    if(m_nActionCancel)
    {
        krResult = KSCOM_E_USER_BREAK;
        goto Exit0;
    }

    if(m_nZipFileCracked)
    {
        krResult = KSCOM_E_FILE_CRACKED;
        goto Exit0;
    }

    krResult = KSCOM_S_OK;

Exit0:

    if (ifile)
    {
        fclose(ifile);
        ifile = NULL;
    }


    return krResult;
}                 

HRESULT STDMETHODCALLTYPE KAEZipArchive::Extract2(
    /*[in]*/IKSFile *piFile)
{
    KSCOMRESULT krResult = KSCOM_E_FAIL;

    if(initialization2(piFile) == 0)
        goto Exit0;

    scan_zip();

    if(m_nActionCancel)
    {
        krResult = KSCOM_E_USER_BREAK;
        goto Exit0;
    }

    if(m_nZipFileCracked)
    {
        krResult = KSCOM_E_FILE_CRACKED;
        goto Exit0;
    }

    krResult = KSCOM_S_OK;

Exit0:

    if (ifile)
    {
        fclose(ifile);
        ifile = NULL;
    }


    return krResult;
}

HRESULT STDMETHODCALLTYPE KAEZipArchive::Stop(
    /*[in]*/void *pvContext)
{
    KSCOMRESULT krResult = KSCOM_S_OK;

    if(!m_nActionCancel)
        m_nActionCancel = 1;

    return krResult;
}

HRESULT STDMETHODCALLTYPE KAEZipArchive::Pause(
    /*[in]*/void *pvContext)
{
    KSCOMRESULT krResult = KSCOM_S_FALSE;

    return krResult;
}

// =========================================================================
// *                          Zip Extract Part                             *
// =========================================================================


//c     : character to output
//crc   : crc 32 field
static inline void crc_32(unsigned char c, unsigned long *crc)
{
    static  unsigned long    crc_32_table[256] =
    {
    0x000000000L, 0x077073096L, 0x0EE0E612CL, 0x0990951BAL, 0x0076DC419L, 0x0706AF48FL, 0x0E963A535L, 0x09E6495A3L,
    0x00EDB8832L, 0x079DCB8A4L, 0x0E0D5E91EL, 0x097D2D988L, 0x009B64C2BL, 0x07EB17CBDL, 0x0E7B82D07L, 0x090BF1D91L,
    0x01DB71064L, 0x06AB020F2L, 0x0F3B97148L, 0x084BE41DEL, 0x01ADAD47DL, 0x06DDDE4EBL, 0x0F4D4B551L, 0x083D385C7L,
    0x0136C9856L, 0x0646BA8C0L, 0x0FD62F97AL, 0x08A65C9ECL, 0x014015C4FL, 0x063066CD9L, 0x0FA0F3D63L, 0x08D080DF5L,
    0x03B6E20C8L, 0x04C69105EL, 0x0D56041E4L, 0x0A2677172L, 0x03C03E4D1L, 0x04B04D447L, 0x0D20D85FDL, 0x0A50AB56BL,
    0x035B5A8FAL, 0x042B2986CL, 0x0DBBBC9D6L, 0x0ACBCF940L, 0x032D86CE3L, 0x045DF5C75L, 0x0DCD60DCFL, 0x0ABD13D59L,
    0x026D930ACL, 0x051DE003AL, 0x0C8D75180L, 0x0BFD06116L, 0x021B4F4B5L, 0x056B3C423L, 0x0CFBA9599L, 0x0B8BDA50FL,
    0x02802B89EL, 0x05F058808L, 0x0C60CD9B2L, 0x0B10BE924L, 0x02F6F7C87L, 0x058684C11L, 0x0C1611DABL, 0x0B6662D3DL,
    0x076DC4190L, 0x001DB7106L, 0x098D220BCL, 0x0EFD5102AL, 0x071B18589L, 0x006B6B51FL, 0x09FBFE4A5L, 0x0E8B8D433L,
    0x07807C9A2L, 0x00F00F934L, 0x09609A88EL, 0x0E10E9818L, 0x07F6A0DBBL, 0x0086D3D2DL, 0x091646C97L, 0x0E6635C01L,
    0x06B6B51F4L, 0x01C6C6162L, 0x0856530D8L, 0x0F262004EL, 0x06C0695EDL, 0x01B01A57BL, 0x08208F4C1L, 0x0F50FC457L,
    0x065B0D9C6L, 0x012B7E950L, 0x08BBEB8EAL, 0x0FCB9887CL, 0x062DD1DDFL, 0x015DA2D49L, 0x08CD37CF3L, 0x0FBD44C65L,
    0x04DB26158L, 0x03AB551CEL, 0x0A3BC0074L, 0x0D4BB30E2L, 0x04ADFA541L, 0x03DD895D7L, 0x0A4D1C46DL, 0x0D3D6F4FBL,
    0x04369E96AL, 0x0346ED9FCL, 0x0AD678846L, 0x0DA60B8D0L, 0x044042D73L, 0x033031DE5L, 0x0AA0A4C5FL, 0x0DD0D7CC9L,
    0x05005713CL, 0x0270241AAL, 0x0BE0B1010L, 0x0C90C2086L, 0x05768B525L, 0x0206F85B3L, 0x0B966D409L, 0x0CE61E49FL,
    0x05EDEF90EL, 0x029D9C998L, 0x0B0D09822L, 0x0C7D7A8B4L, 0x059B33D17L, 0x02EB40D81L, 0x0B7BD5C3BL, 0x0C0BA6CADL,
    0x0EDB88320L, 0x09ABFB3B6L, 0x003B6E20CL, 0x074B1D29AL, 0x0EAD54739L, 0x09DD277AFL, 0x004DB2615L, 0x073DC1683L,
    0x0E3630B12L, 0x094643B84L, 0x00D6D6A3EL, 0x07A6A5AA8L, 0x0E40ECF0BL, 0x09309FF9DL, 0x00A00AE27L, 0x07D079EB1L,
    0x0F00F9344L, 0x08708A3D2L, 0x01E01F268L, 0x06906C2FEL, 0x0F762575DL, 0x0806567CBL, 0x0196C3671L, 0x06E6B06E7L,
    0x0FED41B76L, 0x089D32BE0L, 0x010DA7A5AL, 0x067DD4ACCL, 0x0F9B9DF6FL, 0x08EBEEFF9L, 0x017B7BE43L, 0x060B08ED5L,
    0x0D6D6A3E8L, 0x0A1D1937EL, 0x038D8C2C4L, 0x04FDFF252L, 0x0D1BB67F1L, 0x0A6BC5767L, 0x03FB506DDL, 0x048B2364BL,
    0x0D80D2BDAL, 0x0AF0A1B4CL, 0x036034AF6L, 0x041047A60L, 0x0DF60EFC3L, 0x0A867DF55L, 0x0316E8EEFL, 0x04669BE79L,
    0x0CB61B38CL, 0x0BC66831AL, 0x0256FD2A0L, 0x05268E236L, 0x0CC0C7795L, 0x0BB0B4703L, 0x0220216B9L, 0x05505262FL,
    0x0C5BA3BBEL, 0x0B2BD0B28L, 0x02BB45A92L, 0x05CB36A04L, 0x0C2D7FFA7L, 0x0B5D0CF31L, 0x02CD99E8BL, 0x05BDEAE1DL,
    0x09B64C2B0L, 0x0EC63F226L, 0x0756AA39CL, 0x0026D930AL, 0x09C0906A9L, 0x0EB0E363FL, 0x072076785L, 0x005005713L,
    0x095BF4A82L, 0x0E2B87A14L, 0x07BB12BAEL, 0x00CB61B38L, 0x092D28E9BL, 0x0E5D5BE0DL, 0x07CDCEFB7L, 0x00BDBDF21L,
    0x086D3D2D4L, 0x0F1D4E242L, 0x068DDB3F8L, 0x01FDA836EL, 0x081BE16CDL, 0x0F6B9265BL, 0x06FB077E1L, 0x018B74777L,
    0x088085AE6L, 0x0FF0F6A70L, 0x066063BCAL, 0x011010B5CL, 0x08F659EFFL, 0x0F862AE69L, 0x0616BFFD3L, 0x0166CCF45L,
    0x0A00AE278L, 0x0D70DD2EEL, 0x04E048354L, 0x03903B3C2L, 0x0A7672661L, 0x0D06016F7L, 0x04969474DL, 0x03E6E77DBL,
    0x0AED16A4AL, 0x0D9D65ADCL, 0x040DF0B66L, 0x037D83BF0L, 0x0A9BCAE53L, 0x0DEBB9EC5L, 0x047B2CF7FL, 0x030B5FFE9L,
    0x0BDBDF21CL, 0x0CABAC28AL, 0x053B39330L, 0x024B4A3A6L, 0x0BAD03605L, 0x0CDD70693L, 0x054DE5729L, 0x023D967BFL,
    0x0B3667A2EL, 0x0C4614AB8L, 0x05D681B02L, 0x02A6F2B94L, 0x0B40BBE37L, 0x0C30C8EA1L, 0x05A05DF1BL, 0x02D02EF8DL
    };

    c ^= *(unsigned char *) crc;                // apply current crc to current character
    *crc >>= 8;                                 // shift old value down
    *crc ^= crc_32_table[c];                    // xor in new value
}

#define SPLIT(x)  _fnsplit(x.path,x.drv,x.dir,x.fname, x.ext)

/* ******************************************************************** *
 *
 *  malloc_chk() -- allocate memory with error processing
 *
 * ******************************************************************** */
static inline void * malloc_chk(UINT n)
{
    void *s;                                // temporary pointers

    s = malloc(n);                          // q. enough memory?
    ASSERT(s != NULL);

    //clear_memory((char huge *) s, (long) n);    // else .. clear to nulls
    memset(s, 0, n);                            //seawind modified
    
    return(s);                              // ..and return w/address
}

static UINT bll[] =                         // bit length code lengths
{
    16, 17, 18, 0, 8, 7, 9, 6, 10, 5,
    11, 4, 12, 3, 13, 2, 14, 1, 15
};

static UINT cll[] =                         // copy lengths for literal ..
{                                           // ..codes 257 thru 285
    3, 4, 5, 6, 7, 8, 9, 10, 11, 13,
    15, 17, 19, 23, 27, 31, 35, 43,
    51, 59, 67, 83, 99, 115, 131, 163,
    195, 227, 258, 0, 0
};

static UINT cle[] =                         // extra bits for literal
{                                           // ..codes 257 thru 285
    0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1,
    1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4,
    4, 4, 5, 5, 5, 5, 0, 99, 99
};

static UINT cdo[] =                         // copy distance offsets
{                                           // ..for codes 0 thru 29
    1, 2, 3, 4, 5, 7, 9, 13, 17, 25,
    33, 49, 65, 97, 129, 193, 257, 385,
    513, 769, 1025, 1537, 2049, 3073,
    4097, 6145, 8193, 12289, 16385, 24577
};

static UINT cde[] =                         // copy extra bits for distance
{                                           // ..codes 0 thru 29
    0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4,
    5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10,
    11, 11, 12, 12, 13, 13
};

/* ******************************************************************** *
 *
 *  lookat_code() -- look at the next code from input file
 *
 * ******************************************************************** */
inline UINT KAEZipArchive::lookat_code(int bits)
{
    static const UINT bit_mask[] =                        // bit masks
    {
        0x0000,
        0x0001, 0x0003, 0x0007, 0x000f,
        0x001f, 0x003f, 0x007f, 0x00ff,
        0x01ff, 0x03ff, 0x07ff, 0x0fff,
        0x1fff, 0x3fff, 0x7fff, 0xffff
    };

    while (bsize < bits)                            // get enough bits
    {
        if (rsize > 0)                              // q. anything left to process?
        {
            //seawind 
            int a = fgetc(ifile);

            if(a == EOF)
			{
                m_nZipFileCracked = 1;

				return 0;
			}
            else
            {
                bhold |= (ULONG)(a) << bsize;           // a. yes .. get a character
                bsize += 8;                             // ..and increment counter
                rsize--;                                // ..finally, decrement cnt
            }
        }
        else 
        {
            if (! e_count)                          // q. done messing around?
            {
                extract_flush();                    // a. yes .. flush output buffer
                
                //quit_with(data_error);              // ..then quit with an error msg
                
                //seawind
                m_nZipFileCracked = 1;

                return 0;
            }
            else 
            {
                if (e_count > 0)                    // q. down counting?
                {
                    e_count--;                      // a. yes .. decriment counter
                    return (-1);                     // ..and return all done
                }
                else
                {
                    e_count++;                      // else .. count up
                    break;                          // ..and exit loop
                }
            }
        }
    }

    return(((UINT) bhold) & bit_mask[bits]);        // return just enough bits
}

/* ******************************************************************** *
 *
 *  get_code() -- get next code from input file
 *

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲三级小视频| 国产拍欧美日韩视频二区| 色综合久久九月婷婷色综合| 国产美女视频一区| 国产呦萝稀缺另类资源| 亚洲r级在线视频| 国产亚洲欧美在线| 亚洲精品一区二区三区影院| 欧美一区二区视频在线观看| 欧美一区二区三区在| 91精品国产一区二区| 欧美一级黄色大片| 日韩欧美综合在线| 精品成人一区二区| 精品国精品国产| 国产精品少妇自拍| 精品国产免费人成电影在线观看四季| 日韩三级.com| 久久日韩精品一区二区五区| 久久久久久久久蜜桃| 中文字幕乱码日本亚洲一区二区| 国产农村妇女毛片精品久久麻豆| 国产亚洲欧美日韩日本| 国产精品视频一二| 一区二区三区四区亚洲| 亚洲高清不卡在线观看| 日本成人中文字幕在线视频| 久久国产剧场电影| 大白屁股一区二区视频| www.欧美.com| 欧洲中文字幕精品| 亚洲永久免费视频| 在线观看免费亚洲| 欧美午夜在线一二页| 欧美久久一二区| 日韩精品一区二区三区蜜臀| 国产亚洲欧美在线| 亚洲欧美福利一区二区| 五月激情六月综合| 久久99精品久久久| 99r精品视频| 777亚洲妇女| 国产日韩影视精品| 一区二区三区欧美亚洲| 久久精品国产亚洲aⅴ| 成人在线综合网站| 在线免费观看日本一区| 欧美mv日韩mv亚洲| 成人欧美一区二区三区黑人麻豆 | 91精品黄色片免费大全| 久久一区二区三区国产精品| 亚洲色图欧美激情| 蜜桃视频在线一区| av亚洲精华国产精华精华| 欧美日韩午夜影院| 国产视频一区在线观看| 一区二区三区色| 久久精品国产99久久6| 99久久国产免费看| 日韩一卡二卡三卡四卡| 亚洲同性同志一二三专区| 蜜臀av一级做a爰片久久| jizzjizzjizz欧美| 欧美xxxxxxxxx| 亚洲影院理伦片| 国产精品一二三四| 在线电影国产精品| 1区2区3区国产精品| 美腿丝袜在线亚洲一区| 色先锋久久av资源部| 久久久久久免费网| 日韩av午夜在线观看| 97精品久久久久中文字幕 | 成人欧美一区二区三区视频网页 | 99精品国产99久久久久久白柏| 成人欧美一区二区三区白人| 日韩成人av影视| 一本色道久久综合狠狠躁的推荐| 久久久五月婷婷| 蜜臀99久久精品久久久久久软件| 91麻豆精品一区二区三区| 久久精品一区二区三区四区| 日本一不卡视频| 欧美三级日韩三级| 亚洲视频图片小说| 成人中文字幕在线| 久久久久国产精品人| 日韩电影在线一区二区| 91福利视频网站| 国产精品视频看| 久久99日本精品| 国产91丝袜在线18| 26uuu精品一区二区| 亚洲大片在线观看| 91丨porny丨首页| 久久久久九九视频| 毛片一区二区三区| 91黄视频在线| 亚洲欧美日韩一区二区| 国产大陆a不卡| 日韩欧美国产麻豆| 天天色天天操综合| 色www精品视频在线观看| 91视频.com| 欧美一级高清大全免费观看| 亚洲免费观看在线视频| 丰满放荡岳乱妇91ww| 91色视频在线| 亚洲精品五月天| 不卡欧美aaaaa| 国产日产欧产精品推荐色| 毛片基地黄久久久久久天堂| 7777精品伊人久久久大香线蕉超级流畅| 中文字幕一区二区不卡 | 成人性视频网站| 国产精品色哟哟| 国产大陆精品国产| 国产日韩精品一区二区三区在线| 国产一区二区三区美女| 欧美日韩激情在线| 亚洲成人激情社区| 日韩视频一区二区三区 | 一区二区三区欧美| 91视频免费播放| 亚洲精品视频免费观看| 91蜜桃网址入口| 亚洲精品自拍动漫在线| 99久久精品国产麻豆演员表| 中文字幕制服丝袜成人av| 成人污污视频在线观看| 国产精品无圣光一区二区| 成人免费不卡视频| 精品国产人成亚洲区| 久久国产欧美日韩精品| 久久久精品日韩欧美| 丰满亚洲少妇av| 亚洲婷婷国产精品电影人久久| 99国产欧美另类久久久精品| 亚洲免费资源在线播放| 国产精品1区2区| 亚洲免费在线观看视频| 欧美日韩在线播放三区四区| 日韩在线卡一卡二| 日韩三级精品电影久久久| 蜜桃av噜噜一区二区三区小说| 久久精品一区八戒影视| 99综合影院在线| 一级日本不卡的影视| 777午夜精品视频在线播放| 日本sm残虐另类| 国产精品麻豆网站| 欧美在线影院一区二区| 日韩精品91亚洲二区在线观看| 欧美日韩久久久一区| 国产精品自在在线| 亚洲男人的天堂av| 欧美精品日韩综合在线| 三级影片在线观看欧美日韩一区二区 | 亚洲国产精品一区二区久久恐怖片| 欧美天堂一区二区三区| 另类人妖一区二区av| 欧美激情在线免费观看| jiyouzz国产精品久久| 亚洲私人黄色宅男| 91精品啪在线观看国产60岁| 精品一区二区在线看| 成人免费一区二区三区视频| 欧美日韩国产首页| 老司机精品视频在线| 日韩毛片在线免费观看| 欧美一区二区在线视频| 成人高清免费在线播放| 婷婷亚洲久悠悠色悠在线播放| 日韩视频免费观看高清完整版在线观看 | 国产欧美日韩在线视频| 欧美综合在线视频| 蜜桃视频在线观看一区二区| 亚洲欧美色图小说| 2020国产精品久久精品美国| 99国产麻豆精品| 久久99精品国产.久久久久久| 亚洲欧洲日韩av| 日韩一级二级三级精品视频| av不卡一区二区三区| 蜜臀av性久久久久av蜜臀妖精| 亚洲欧美色一区| 国产视频视频一区| 日韩一二在线观看| 色婷婷av久久久久久久| 国产精品亚洲午夜一区二区三区| 亚洲国产精品久久人人爱| 国产精品美女久久久久高潮| 欧美成人午夜电影| 91麻豆精品国产91久久久更新时间 | 日韩女优电影在线观看| 欧美三级电影在线观看| 91网页版在线| 日本成人在线一区| 欧美bbbbb| 五月天精品一区二区三区|