=======================================================================
               Bga32.dll version 0.37 API t@C
                                                              ؑ 
                                                       Toshinobu Kimura
=======================================================================

̃t@ĆABGA32.DLLŃT|[gĂAPIɊւt@CłB
A[JCo DLL  API ɏĂ܂AׂĂ API T|[gĂ
킯ł͂܂B
e API ɂāAȉ̂悤ɕނ܂B

    ...SɃT|[g
    ...ꕔdl𖞂ĂȂ

ȂALڂĂȂ API ͌ł͎Ă܂B

=======================================================================
LHA.DLL ݊ API
=======================================================================

-----------------------------------------------------------------------
 int WINAPI Bga( const HWND hWnd, LPCSTR pCmdLine,
                   LPSTR pOutput, const DWORD dwSize );
-----------------------------------------------------------------------
  1
@\
    k^𓀂s܂B


    hWnd        BGA32.DLL ĂяoAṽEBhEEnhB
            BGA32.DLL ͎sɂ̃EBhEɑ΂ EnableWin-
            dow() sEBhE̓}܂BEBhE
            ݂ȂR\[Av̏ꍇCw肷Kv̂
            ꍇ NULL n܂B
    pCmdLine   BGA32.DLL ɓnR}hB
    pOutput    BGA32.DLL ʂԂ߂̃obt@BO[o
            ̏ꍇ̓bNĂKv܂B
            TCYɐ͂܂B
            ł́AłBobt@ɂ͉Ԃ܂B
    dwSize      obt@̃TCYBʂwTCYzꍇ́A
            TCYɐ؂l߂܂B
            ʂ̃TCY菬ꍇ́AŌ NULL 
            t܂BiŒP݂̂ۏ؂j
            obt@̃TCYς̏ꍇANULL ǂɂȂ
            \_ɗӂ̂ƁB
            ł́AłB

߂l
  I̎          0
  G[ꍇ  0 ȊO̐iG[l >= 0x8000FqjB

        ȂA𓀐ɊɃt@CȂǂ̗Rŉ𓀂XLbv
        ꍇł 0 Ԃ܂B

-----------------------------------------------------------------------
 WORD WINAPI BgaGetVersion()
-----------------------------------------------------------------------
  2
@\
    BGA32.DLL ̃o[WԂ܂B

߂l
    ݂̃o[W     37 -> version 0.37
                        100 -> version 1.00

̑
    dlύXւ̑ΉlāCo[W̃`FbN𐄏܂B

-----------------------------------------------------------------------
 BOOL WINAPI BgaGetRunning()
-----------------------------------------------------------------------
  10
@\
     BGA32.DLL 쒆ǂԂ܂B

߂l
    sł TRUE Ԃ܂B
    słȂ FALSE Ԃ܂B


=======================================================================
LHA.DLL ݊ API
=======================================================================

-----------------------------------------------------------------------
 BOOL WINAPI BgaCheckArchive( LPCSTR pFileName, const int iMode )
-----------------------------------------------------------------------
  11
@\
    wt@C BGA32.DLL 鏑ɂǂ𒲍܂B


    pFileName   `FbNׂɂ̃t@CB
    iMode       `FbN[hB
      CHECKARCHIVE_RAPID    ȈՃ[hBŏRڂ܂ł̃wb_̂
                `FbN܂B
      CHECKARCHIVE_BASIC    ȈՃ[hBׂẴt@Cwb_ɂ
                `FbN܂B

      ABGA32.DLL ł͑̃`FbN[h͎wł܂B

߂l
    FALSE      : t@Cɂł͂ȂA`FbN[hŝƂ
    FALSE ȊO : .GZA / .BZA t@ĈƂ
                  ł͎bňȉ̒lԂĂ܂B
                    1 : .GZA t@ĈƂ
                    2 : .BZA t@ĈƂ

-----------------------------------------------------------------------
 BOOL WINAPI BgaConfigDialog( const HWND hWnd, LPSTR pOption,
                                const int iMode )
-----------------------------------------------------------------------
  12
@\
    R}hCŃXCb`w肳Ȃꍇ̓肵܂B
    uʃt@C̕ύX[ -f ]vȊÔׂẴXCb`ݒ\łB
    Ŏw肵ݒƃR}hCŎw肳ꂽXCb`gݍ킹
    ʂœ肵܂B
    AR}hCł̎w肪D悳܂B
    ݒ WXg Software\ArchiverDll\Bga32 ȉɏ܂܂B


    hWnd        BGA32.DLL ĂяoAṽEBhẼnhB
    pOption     WXgɏ܂eƓl̓sR}h
                𓾂邽߂̃obt@̃|C^B
                obt@TCY 513 oCgȏmۂĂB
                R}hKvƂȂꍇ NULL w肵ĂB
    iMode       WJƊi[̂ǂɂĂ̂̂w肵܂B
                ABGA32.DLL ł͂̎w͖܂B

                UNPACK_CONFIG_MODE  1   WJɂẴXCb`wB
                PACK_CONFIG_MODE    2   i[ɂẴXCb`wB

߂l
    BGA32.DLL Ɏs̎      ERROR_ALREADY_RUNNING
    ݒ肪                TRUE
    LZ                    FALSE

-----------------------------------------------------------------------
 int WINAPI BgaGetFileCount( LPCSTR pArcFile )
-----------------------------------------------------------------------
  17
@\
    w肳ꂽɃt@CɊi[Ăt@C擾܂B


    pArcFile    i[t@C𓾂Ƀt@C

߂l
    >= 0    i[t@C
    -1      G[

̑
    Iɂ  CHECKARCHIVE_BASIC [h BgaCheckArchive() Ă
    oĂ܂B(^^;

-----------------------------------------------------------------------
 BOOL WINAPI BgaQueryFunctionList( const int iFunction )
-----------------------------------------------------------------------
  18
@\
    w肳ꂽ API gp\ǂ𒲂ׂ܂B


    iFunction   API lB̓IȐlɂĂ BGA32API.H 
                QƂĉB

߂l
    TRUE    API gp\
    FALSE   API gpsA܂ iFunction Ȓl


=======================================================================
OpenArchive n API
=======================================================================

-----------------------------------------------------------------------
 HARC WINAPI BgaOpenArchive( const HWND hWnd, LPCSTR pFileName,
                               const DWORD dwMode )
-----------------------------------------------------------------------
  21
@\
    nhƏɃt@Cѕt܂B


    hWnd        BGA32.DLL ĂяoAṽEBhẼnh
    pFileName   Ƀt@CBɃt@C͂ЂƂwł܂B
    dwMode      BgaFindFirst() ̏̃[h

            M_CHECK_ALL_PATH        t@ČɑSpXB
            M_CHECK_FILENAME_ONLY   Ƀt@Ĉ݂ΏۂƂB
            0                       M_CHECK_FILENAME_ONLY Ɠ

            ł͑̃[h̓T|[gĂ܂B

߂l
    w̏Ƀt@CɑΉnhBG[ NULL Ԃ܂B


    o[Wł́Cɕ̃nh𗘗p鎖͂ł܂B(^^;

-----------------------------------------------------------------------
 int WINAPI BgaCloseArchive( HARC hArc )
-----------------------------------------------------------------------
  22
@\
    BgaOpenArchive() Ŋtnh܂B
    BGA32.DLL ł́ADLL ̃A[hɎIɃnh܂
    ̂ŁAANZXIɂ͂Ȃ炸 API ĂяoĂB


    hArc        BgaOpenArchive() ŕԂꂽnhB

߂l
     0 Ԃ܂B

-----------------------------------------------------------------------
 int WINAPI BgaFindFirst( HARC hArc, LPCSTR pWildName,
                            LPINDIVIDUALINFO pSubInfo )
-----------------------------------------------------------------------
  23
@\
    ŏ̊i[t@C̏擾܂B


    hArc        BgaOpenArchive() ŕԂꂽnh
    pWildName   t@CBt@C͂ЂƂwł܂B
    pSubInfo    ʂԂ߂ INDIVIDUALINFO ^̍\̂ւ̃|C^B
                ʂKvƂȂꍇ NULL wł܂B

߂l
    0       IBpSubInfo Ŏw肳ꂽϐɊi[t@C̏
            ݒ肳܂B
    -1      IB

-----------------------------------------------------------------------
 int WINAPI BgaFindNext( HARC hArc, LPINDIVIDUALINFO pSubInfo )
-----------------------------------------------------------------------
  24
@\
    2 Ԗڈȍ~̊i[t@C̏擾܂B


    hArc        UnlhaOpenArchive() ŕԂꂽnhB
    pSubInfo    ʂԂ߂ INDIVIDUALINFO ^̍\̂ւ̃|C^B
                ʂKvƂȂꍇ NULL wł܂B

߂l
    0       IBpSubInfo Ŏw肳ꂽϐɊi[t@C̏
            ݒ肳܂B
    -1      IB

-----------------------------------------------------------------------
 DWORD WINAPI BgaGetArcOriginalSize( HARC hArc )
-----------------------------------------------------------------------
  33
@\
    Ƀ}b`t@C̃TCY̍v𓾂܂BBgaFindNext() 
    ĂяołȂƕԋplɈӖ͂܂B̏ꍇ͂
    ܂łɃ}b`t@C̃TCY̍vƂȂ܂B

߂l
    vTCYBG[ɂ -1 Ԃ܂B

-----------------------------------------------------------------------
 DWORD WINAPI BgaGetArcCompressedSize( HARC hArc )
-----------------------------------------------------------------------
  34
@\
    Ƀ}b`t@C̈kTCY̍v𓾂܂BBgaFindNext() 
    ĂяołȂƕԋplɈӖ͂܂B̏ꍇ͂
    ܂łɃ}b`t@C̃TCY̍vƂȂ܂B


߂l
    kTCY̍vBG[ɂ -1 Ԃ܂B

-----------------------------------------------------------------------
 WORD WINAPI BgaGetArcRatio( HARC hArc )
-----------------------------------------------------------------------
  35
@\
    Ƀ}b`t@C̑Ŝ̈k𓾂܂BBgaFindNext() 
    ĂяołȂƕԋplɈӖ͂܂B̏ꍇ͂
    ܂łɃ}b`t@Cł̈kƂȂ܂B


߂l
    p[~ (番) ŌꂽkBG[ɂ -1 Ԃ܂B

-----------------------------------------------------------------------
    INDIVIDUALINFO ̍\
-----------------------------------------------------------------------
\̒`

        typedef struct {
            DWORD       dwOriginalSize;
            DWORD       dwCompressedSize;
            DWORD       dwCRC;
            UINT        uFlag;
            UINT        uOSType;
            WORD        wRatio;
            WORD        wDate;
            WORD        wTime;
            char        szFileName[FNAME_MAX32 + 1];
            char        dummy1[3];
            char        szAttribute[8];
            char        szMode[8];
        }INDIVIDUALINFO ;

o̐
    dwOriginalSize      t@C̃TCY
    dwCompressedSize    k̃TCY
    dwCRC               BGA32.DLL ł͏ 0 łB
    uFlag               BGA32.DLL ł͏ 0 łB
    uOSType             BGA32.DLL ł͏ 0 łB
    wRatio              p[~ (番) ŕ\ꂽkB
    wDate               i[t@C̍XVt
                            struct {
                            unsigned ft_day   : 5;
                            unsigned ft_month : 4;
                            unsigned ft_year  : 7;
                            } _DosDate;
                        ft_year Ɋi[l 1980 Ňo
                        NłBāC_Iɂ 2107 N
                        ŕ\ł邱ƂɂȂ܂B
    wTime               i[t@C̍XVB
                            struct {
                            unsigned ft_tsec : 5;
                            unsigned ft_min  : 6;
                            unsigned ft_hour : 5;
                            } _DosTime;
                        ft_tsec  Ɋi[lb 2 Ŋ
                        ̂ł_ɒӂĂB
    szFileName          i[t@C
    szAttribute         i[t@C̑
    szMode              "-gzip-", "-bzip2-" ܂ "-store-"( k )


=======================================================================
bZ[Wn API
=======================================================================

-----------------------------------------------------------------------
 BOOL WINAPI BgaSetOwnerWindow( const HWND hWnd )
-----------------------------------------------------------------------
  90
@\
    BGA32.DLL ̃bZ[W̑MEBhEݒ肵܂BBGA32.DLL 
    Ŏw肳ꂽEBhE wm_arcextract bZ[W𑗐M܂B

߂l
    Ȉꍇ TRUE Ԃ܂B
    ɂ API ŕʂ̃EBhEݒ肳Ăꍇɂ FALSE Ԃ܂B

-----------------------------------------------------------------------
 BOOL WINAPI BgaClearOwnerWindow()
-----------------------------------------------------------------------
  91
@\
    BgaSetOwnerWindow() Őݒ肵EBhE̐ݒ܂B

߂l
    Ȉꍇ TRUE Ԃ܂B
    G[ FALSE Ԃ܂B


-----------------------------------------------------------------------
wm_arcextract bZ[W
-----------------------------------------------------------------------
@\
    wm_arcextract bZ[W󂯎邱ƂɂABGA32.DLL ꂩ
    i[t@C̏𓾂邱Ƃł܂B

    wm_arcextract bZ[Wgpꍇɂ RegisterWindowMessage() 
    VXeɓo^ŎgpĂB


    wm_arcextract bZ[W̃p[^

        iMode = (int)wParam                     /* ʒm[h */

            0 : Yt@C̏Jn邱Ƃ\܂B
            1 : Yt@C̏ł邱Ƃ\܂B
            2 : I悤ƂĂ邱Ƃ\܂B
            3 : Yɂ̏Jn邱Ƃ\܂B
                szSourceFileName ɏɖi[܂B

        pEis = (EXTRACTINGINFO FAR *)lParam     /* \̂w|C^ */

߂l

    ̃bZ[WAvP[V́A0 ԂȂ΂Ȃ܂B
    ΂ 0 ȊOԂƂɂABGA32.DLL ɏ𒆎~܂B

-----------------------------------------------------------------------
 BOOL WINAPI BgaSetOwnerWindowEx( HWND hWnd, LPARCHIVERPROC pArcProc )
-----------------------------------------------------------------------
  51
@\
    BGA32.DLL ̏󋵂󂯎邽߂̃R[obN֐̎ws܂B
    pArcProc  NULL w肷 BgaSetOwnerWindow() Ɠ̏
    s܂B

߂l
    Ȉꍇ TRUE Ԃ܂B
    ɂ API ŕʂ̃EBhEݒ肳Ăꍇɂ FALSE Ԃ܂B

-----------------------------------------------------------------------
 BOOL WINAPI BgaKillOwnerWindowEx( HWND hWnd )
-----------------------------------------------------------------------
  52
@\
    BgaSetOwnerWindowEx() Őݒ肵EBhE̐ݒ܂B

߂l
    Ȉꍇ TRUE Ԃ܂B
    G[ FALSE Ԃ܂B

-----------------------------------------------------------------------
    R[obN֐̒`
-----------------------------------------------------------------------

typedef BOOL CALLBACK ARCHIVERPROC( HWND hWnd, UINT uMsg, UINT uState,
                                    LPEXTRACTINGINFOEX pEis )

    hWnd    BgaSetOwnerWindowEx Ŏw肵EBhEnhn܂B
    uMsg    ݂̂Ƃ wm_arcextract ƂȂ܂B
    uState  BGA32.DLL ̏Ԃ\ȉ̒li[܂B
            ( wm_arcextract bZ[W̃p[^ wParam Ɠ`ł )

        0 : Yt@C̏Jn邱Ƃ\܂B
        1 : Yt@C̏ł邱Ƃ\܂B
        2 : I悤ƂĂ邱Ƃ\܂B
        3 : Yɂ̏Jn邱Ƃ\܂B
            szSourceFileName ɏɖi[܂B

    pEis    EXTRACTINGINFOEX \̂ւ̃|C^łB i[t@C
            ւ񂪓܂B

߂l
    ARCHIVERPROC  BGA32.DLL ɏpƂ TRUEA
    ~Ƃ FALSE ԂȂ΂Ȃ܂B
    ߂l wm_arcextract bZ[WƂ͋tł_ɒӂĂB

-----------------------------------------------------------------------
    EXTRACTINGINFO ̍\
-----------------------------------------------------------------------
\̒`
        typedef struct {
            DWORD   dwFileSize;
            DWORD   dwWriteSize;
            char    szSourceFileName[FNAME32_MAX + 1];
            char    dummy1[3];
            char    szDestFileName[FNAME32_MAX + 1];
            char    dummy[3];
        }  EXTRACTINGINFO ;

o̐
    dwFileSize          i[t@C̃IWiTCY
    dwWriteSize         i[EWJŏ񂾃TCY
    szSourceFileName    si[t@C
    szDestFileName      ۂɏ܂pX

-----------------------------------------------------------------------
    EXTRACTINGINFOEX ̍\
-----------------------------------------------------------------------
\̒`
        typedef struct {
                    EXTRACTINGINFO exinfo;
            DWORD dwCompressedSize;
            DWORD dwCRC;
            UINT  uOSType;
            WORD  wRatio;
            WORD  wDate;
            WORD  wTime;
            char  szAttribute[8];
            char  szMode[8];
        } EXTRACTINGINFOEX;

    exinfo              EXTRACTINGINFO \̂i[܂B
    dwCompressedSize    i[t@C̈kTCYB
    dwCRC               BGA32.DLL ł͏ 0 łB
    uOSType             BGA32.DLL ł͏ 0 łB
    wRatio              p[~ (番) ɂi[t@C̈kB
    wDate               i[t@C̍XVtB
                            struct {
                            unsigned ft_day   : 5;
                            unsigned ft_month : 4;
                            unsigned ft_year  : 7;
                            } _DosDate;
                        ft_year Ɋi[l 1980 Ňo
                        NłBāC_Iɂ 2107 N
                        ŕ\ł邱ƂɂȂ܂B
    wTime               i[t@C̍XVB
                            struct {
                            unsigned ft_tsec : 5;
                            unsigned ft_min  : 6;
                            unsigned ft_hour : 5;
                            } _DosTime;
                        ft_tsec  Ɋi[lb 2 Ŋ
                        ̂ł_ɒӂĂB
    szAttribute         i[t@C̑
    szMode              "-gzip-" ܂ "-bzip2-"

------------------------------------------------------------------------
    ̗
------------------------------------------------------------------------

PDiMode 3 ŃbZ[W𑗏oBɖ𓾂B

QDiMode 0 ŃbZ[W𑗏oBi[t@C𓾂B
RDiMode 1 ŃbZ[W𑗏oB݃TCYB
    ̃t@CɂĂ̏I܂ł̃bZ[W𑗏oB

    ׂĂ̏I_( 󋵕\^C~O )ŁA
SDiMode 2 ŃbZ[W𑗏oB


=======================================================================
EnumMembersProc n API
=======================================================================

-----------------------------------------------------------------------
 BOOL WINAPI BgaSetEnumMembersProc( UNLHA_WND_ENUMMEMBPROC pEnumProc )
-----------------------------------------------------------------------
  99
@\
    BGA32.DLL ĂяoR[obN֐̓o^s܂B


    pEnumProc   BGA32.DLL ĂяoR[obN֐ւ̃|C^B

߂l
    ɓo^sꂽꍇ TRUE Ԃ܂B
    o^Ɏsꍇ FALSE Ԃ܂B

-----------------------------------------------------------------------
 BOOL WINAPI BgaClearEnumMembersProc()
-----------------------------------------------------------------------
  100
@\
    BgaSetEnumMembersProc() ōs֐̓o^܂B

߂l
    ɉsꂽꍇ TRUE Ԃ܂B
    Ɏsꍇ FALSE Ԃ܂B

-----------------------------------------------------------------------
BOOL CALLBACK UNLHA_WND_ENUMMEMBPROC( LPUNLHA_ENUM_MEMBER_INFO pInfo )
-----------------------------------------------------------------------
@\
    ɂ̏󂯎邽߂́AAvP[VŒ`ꂽR[obN
    ֐łB
    i[t@C̎wׂsꍇȂǂł̎gp{̖
    IƂĂ邽߁ABga() Ŏw肳ꂽXCb`𔽉fČ
    sʃ}b`̂ɂĂ̂݁AŎw肵R[obN
    ֐Ă΂dlƂȂĂ܂B


    pInfo   ɂ̃ȍi[\̂ւ̃|C^B̍\̂
             TRUE ԂƂ BGA32.DLL ɏs킹
            Ƃł܂B

߂l
    TRUE    pInfo ̏ɏ] BGA32.DLL ɏs킹܂B
    FALSE   BGA32.DLL ɓYȍXLbv܂B

-----------------------------------------------------------------------
    UNLHA_ENUM_MEMBER_INFO ̍\
-----------------------------------------------------------------------
\̒`
    struct {
    DWORD       dwStructSize;
    UINT        uCommand;
    DWORD       dwOriginalSize;
    DWORD       dwCompressedSize;
    DWORD       dwAttributes;
    DWORD       dwCRC;
    UINT        uOSType;
    WORD        wRatio;
    FILETIME    ftCreateTime;
    FILETIME    ftAccessTime;
    FILETIME    ftWriteTime;
    char        szFileName[FNAME_MAX32 + 1];
    char        dummy1[3];
    char        szAddFileName[FNAME_MAX32 + 1];
    char        dummy2[3];
    } UNLHA_ENUM_MEMBER_INFO, *LPUNLHA_ENUM_MEMBER_INFO;

o̐
    dwStructSize        ̍\̂̃TCYi[Ă܂Bl
                        ȂłB
    uCommand            Bga() ǂ̖߂܂B

                    UNLHA_RENAME_COMMAND    n 

                    ł n ߈ȊO͑ΉĂ܂B

    dwOriginalSize      ͏ 0 łB
    dwCompressedSize    ͏ 0 łB
    dwAttributes        ͏ 0 łB
    dwCRC               ͏ 0 łB
    uOSType             ͏ 0 łB
    wRatio              ͏ 0 łB
    ftCreateFile        ͏ 0 łB
    ftAccessTime        ͏ 0 łB
    ftWriteTime         ͏ 0 łB
    szFileName          ύXt@CpX܂߂Ďw肵܂B
    szAddFileName       ͏ 0 łB


=======================================================================
API ̕ԂG[R[h
=======================================================================

ERROR_FILE_OPEN         t@CJ܂łB
ERROR_MAKEDIRECTORY     fBNg쐬ł܂B
ERROR_CANNOT_WRITE      ݃G[܂B
ERROR_HEADER_CRC        ɂ̃wb_̃`FbNTĂ܂B
ERROR_ARC_FILE_OPEN     ɂJo܂B
ERROR_NOT_ARC_FILE      ɂ̃t@Cw肳Ă܂B
ERROR_CANNOT_READ       t@C̓ǂݍݎɃG[܂B
ERROR_FILE_STYLE        w肳ꂽt@C͗Lȏɂł͂܂B
ERROR_COMMAND_NAME      R}hw肪ԈĂ܂B
ERROR_MORE_HEAP_MEMORY  Ɨp̂߂̃q[vsĂ܂B
ERROR_ALREADY_RUNNING    BGA32.DLL 쒆łB
ERROR_USER_CANCEL       [U[ɂď𒆒f܂B
ERROR_TMP_OPEN          ƃt@C쐬ł܂B
ERROR_ARC_READ_ONLY     ݐp̏ɂɑ΂鑀͂ł܂B
ERROR_NOT_FIND_ARC_FILE w肳ꂽfBNgɂ͏ɂ܂łB
ERROR_RESPONSE_READ     X|Xt@C̓ǂݍݎɃG[܂B
ERROR_TMP_COPY          ƃt@C̏ɂւ̏߂ł܂łB
ERROR_NOT_FIND_FILE     t@C܂B
ERROR_GET_ATTRIBUTES    t@C擾ł܂B
ERROR_GET_INFORMATION   t@C񂪎擾ł܂B

=======================================================================
