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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? kaeziparchiveimplement.cpp

?? zip解壓源碼.
?? CPP
?? 第 1 頁 / 共 5 頁
字號:
#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
 *

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美日韩一区二区电影| 国产精品进线69影院| 亚洲成人你懂的| 91蜜桃婷婷狠狠久久综合9色| 欧美国产视频在线| 99久久综合狠狠综合久久| 国产精品网站导航| 不卡的av电影| 怡红院av一区二区三区| 欧美在线观看一二区| 一区二区三区中文免费| 欧美日韩在线三级| 美女性感视频久久| 国产日韩欧美在线一区| 99久久国产综合精品女不卡| 亚洲一区在线观看免费观看电影高清| 色哟哟一区二区三区| 婷婷中文字幕一区三区| 精品国产不卡一区二区三区| 国产成人亚洲综合色影视| 亚洲人成精品久久久久久| 国内外成人在线| 99v久久综合狠狠综合久久| 亚洲一区二区三区四区的| 日韩欧美国产一区二区三区| 粉嫩久久99精品久久久久久夜| 亚洲三级电影网站| 91麻豆精品国产91久久久久久久久 | 精品在线观看视频| 国产精品成人网| 制服丝袜亚洲色图| 成人免费视频播放| 婷婷一区二区三区| 国产精品美女视频| 91精品国产手机| 成年人国产精品| 美腿丝袜亚洲三区| 欧美中文字幕不卡| 国产成人一区在线| 日韩高清一区在线| 亚洲欧美韩国综合色| 精品免费一区二区三区| 日本精品一区二区三区高清| 国产乱国产乱300精品| 亚洲高清不卡在线| 国产精品免费久久久久| 国产一区免费电影| 午夜伦理一区二区| 国产精品久久久久7777按摩| 91精品国产91久久久久久一区二区| 白白色 亚洲乱淫| 久久精品国产久精国产| 亚洲国产日韩综合久久精品| 欧美国产禁国产网站cc| 555www色欧美视频| 91久久奴性调教| 成人黄色小视频在线观看| 精品一区二区三区视频| 天堂资源在线中文精品| 欧美欧美欧美欧美| 色哟哟国产精品| 成人国产精品免费| 国产精品888| 黄色成人免费在线| 26uuu亚洲| 精品国产百合女同互慰| 91麻豆精品国产91久久久资源速度| 欧美在线不卡一区| 91女厕偷拍女厕偷拍高清| 懂色av中文一区二区三区| 国产精品亚洲一区二区三区妖精| 久久99久久99| 久久精品国产77777蜜臀| 免费成人在线网站| 蜜臀av性久久久久蜜臀av麻豆| 香蕉成人啪国产精品视频综合网| 一区二区三区高清在线| 亚洲一区二区三区小说| 一区二区三区在线观看欧美| 亚洲精品日日夜夜| 一卡二卡三卡日韩欧美| 亚洲二区在线视频| 日韩国产在线一| 蜜桃av一区二区三区电影| 蜜桃一区二区三区在线| 久色婷婷小香蕉久久| 久久国产精品99精品国产| 美女视频免费一区| 极品少妇xxxx精品少妇| 国产精品一区二区果冻传媒| 成人一区在线看| 91视频你懂的| 欧洲视频一区二区| 6080国产精品一区二区| 精品国产乱码久久久久久蜜臀| 欧美精品一区二区三区高清aⅴ | 国产日韩欧美综合一区| 中文字幕一区二区三区色视频| 中文字幕佐山爱一区二区免费| 亚洲黄色性网站| 午夜精品久久久久| 国产在线观看一区二区| www.久久精品| 欧美久久久久中文字幕| 久久―日本道色综合久久| 国产精品乱码人人做人人爱| 樱桃视频在线观看一区| 九九国产精品视频| 91在线观看美女| 91精品国产91久久久久久最新毛片| 国产偷国产偷精品高清尤物| 欧美日韩国产精选| 国产日韩三级在线| 欧美三电影在线| xvideos.蜜桃一区二区| 成人免费在线视频观看| 日韩精品久久理论片| 国产伦精品一区二区三区视频青涩| 国产成人综合在线播放| 日本韩国一区二区三区视频| 这里只有精品免费| 国产精品传媒入口麻豆| 日韩成人一区二区三区在线观看| 国产精品一区二区三区网站| 欧美视频一区二区| 欧美国产欧美综合| 亚洲一区二区三区四区在线观看| 国产精品一区二区在线观看网站| 一本久久a久久精品亚洲| 精品免费国产一区二区三区四区| 中文字幕在线不卡| 精品一二三四在线| 欧美日韩免费一区二区三区视频| 国产亚洲欧美在线| 天堂蜜桃91精品| 91国产免费观看| 国产欧美一区二区三区鸳鸯浴| 一区二区三区四区视频精品免费| 精品一区二区免费看| 欧美三级日韩在线| 国产精品麻豆99久久久久久| 久久91精品国产91久久小草| 91丨porny丨中文| 国产欧美日韩综合| 精品一区二区影视| 欧美日韩另类一区| 亚洲国产精品ⅴa在线观看| 日本怡春院一区二区| 91福利区一区二区三区| 国产清纯美女被跳蛋高潮一区二区久久w | 美国毛片一区二区三区| 不卡的av网站| 欧洲av在线精品| 国产成人亚洲精品狼色在线| 亚洲在线视频免费观看| 91精品国产一区二区| 欧美揉bbbbb揉bbbbb| 午夜欧美电影在线观看| 精品一区二区久久久| 在线观看亚洲a| 不卡的av中国片| 一区二区在线观看免费| 91麻豆精品91久久久久久清纯| 91精品国产综合久久福利软件| 国产成人精品三级麻豆| 国产成a人亚洲精| 国产高清在线精品| 亚洲va欧美va人人爽| 国产欧美一区在线| 欧美亚洲国产一区在线观看网站 | 99精品欧美一区二区三区综合在线| 17c精品麻豆一区二区免费| 欧美极品少妇xxxxⅹ高跟鞋| 欧美日产在线观看| 91麻豆精品国产自产在线观看一区 | 亚洲国产精品久久人人爱蜜臀| 91成人免费电影| 国产精品一二三四| 亚洲综合免费观看高清完整版在线| 日韩欧美一区二区三区在线| 亚洲永久免费av| av一区二区三区| 91在线观看污| av在线不卡电影| 国产高清视频一区| 国产在线看一区| 亚洲444eee在线观看| 久久精品水蜜桃av综合天堂| 一区二区三区不卡视频在线观看| 青青草国产精品97视觉盛宴| 在线免费观看日韩欧美| 成av人片一区二区| 99久久国产综合精品色伊 | 亚洲第一电影网| 欧美极品美女视频| 亚洲精品第1页| 久久精工是国产品牌吗| 国产欧美精品一区aⅴ影院| 91福利在线看| 欧美成人r级一区二区三区|