================================================================================
                  7-zip32.DLL Ver 9.22.00.01　API 説明ファイル
================================================================================
                                                            秋田 稔 (2014/06/25)

高度の圧縮率で知られる7-Zipを統合アーカイバ仕様のDLLにしたものです。
7z形式の圧縮解凍および通常よりも圧縮率の高いZIP書庫を作成します。

An English document please refer to this one. (Thanks. M.R. Poeschl)
http://www.csdinc.co.jp/archiver/lib/main-e.html

--------------------------------------------------------------------------------
int WINAPI SevenZip(const HWND _hwnd, LPCSTR _szCmdLine,
                    LPSTR _szOutput, const DWORD _dwSize)
--------------------------------------------------------------------------------
順序数  1
機能
    圧縮・解凍等を行います。

引数
    _hwnd       7-zip32.dll を呼び出すアプリのウィンドウハンドル。
                7-zip32.dll は実行時にこのウィンドウに対して
                EnableWindow() を実行しウィンドウの動作を抑制します。
                ウィンドウが存在しないコンソールアプリの場合や、
                指定する必要のない場合は NULL を渡します。
    _szCmdLine  7-zip32.dll に渡すコマンド文字列。
    _szOutput   7-zip32.dll が結果を返すためのバッファ。
                グローバルメモリー 等の場合はロックされている必要が
                あります。
    _dwSize     バッファのサイズ。
                結果が指定サイズを越える場合は、このサイズに
                切り詰められます。
                サイズが 1 以上であれば、常に最後に NULL 文字が
                付加されます。

戻り値
    正常終了の時  0。
    エラー発生時  0 以外の数。
                  エラー値は未検証。


--------------------------------------------------------------------------------
WORD WINAPI SevenZipGetVersion(VOID)
--------------------------------------------------------------------------------
順序数  2
機能
    7-zip32.dll のバージョンを返します。

戻り値
    現在のバージョンの上位 2 ワードに 100 を掛けたものが返ってきます。
    例) 2.30 -> 230
    下位 2 ワードを得るには，SevenZipGetSubVersion() を使用します。

その他
    版数は取り合えずですが以下のようにしています。

    2.30.18.01｜a  : 本家 7-zip のメジャーバージョン。
    a.bb.cc.dd｜bb : 本家 7-zip のマイナーバージョン。
              ｜cc : 本家 7-zip のベータバージョン。（現在は未使用）
              ｜dd : 7-zip32.dll のリリース番号(本家が上がれば 01 に戻る)


--------------------------------------------------------------------------------
BOOL WINAPI SevenZipGetCursorMode(VOID)
--------------------------------------------------------------------------------
順序数  3
機能
    7-zip32.dll の動作中にカーソルを表示するモードか否かを得ます。
    
戻り値
    TRUE        カーソル表示モード。
    FALSE       カーソル非表示モード。


--------------------------------------------------------------------------------
BOOL WINAPI SevenZipSetCursorMode(const BOOL _CursorMode)
--------------------------------------------------------------------------------
順序数  4
機能
    7-zip32.dll の動作中にカーソルを表示するモードか否かを設定します。
    7-zip32.dll では値は保存しますが、動作に影響はありません。

引数
    _CursorMode 設定するカーソルモード。
      TRUE      カーソル表示モード。
      FALSE     カーソル非表示モード。

戻り値
    常に TRUE を返す。


--------------------------------------------------------------------------------
BOOL WINAPI SevenZipGetBackGroundMode(VOID)
--------------------------------------------------------------------------------
順序数  5
機能
    7-zip32.dll がバックグラウンドモードか否かを得ます。

戻り値
    TRUE        バックグラウンドモード。
    FALSE       非バックグラウンドモード。


--------------------------------------------------------------------------------
BOOL WINAPI SevenZipSetBackGroundMode(const BOOL _BackGroundMode)
--------------------------------------------------------------------------------
順序数  6
機能
    7-zip32.dll のバックグラウンドモードを設定します。
    7-zip32.dll では値は保存しますが、動作に影響はありません。

引数
    bBackGroundMode 設定するバックグラウンドモード。
      TRUE      バックグラウンドモード
      FALSE     非バックグラウンドモード

戻り値
    常に TRUE を返す。


--------------------------------------------------------------------------------
WORD WINAPI SevenZipGetCursorInterval(VOID)
--------------------------------------------------------------------------------
順序数  7
機能
    カーソルの回転速度を得ます。

戻り値
    カーソルの回転速度（msec)


--------------------------------------------------------------------------------
BOOL WINAPI SevenZipSetCursorInterval(const WORD _Interval)
--------------------------------------------------------------------------------
順序数  8
機能
    カーソルの回転速度を設定します。
    7-zip32.dll では値は保存しますが、動作に影響はありません。

引数
    _Interval   カーソルの回転速度（msec)
                デフォルトは 80 (msec) です。

戻り値
    常に TRUE を返す。


--------------------------------------------------------------------------------
BOOL WINAPI SevenZipGetRunning(VOID)
--------------------------------------------------------------------------------
順序数  10
機能
    現在 7-zip32.dll が動作中か否かを得ます。
    アプリケーション側は必ず圧縮／解凍等のファイルアクセスを伴うAPIを
    実行する前には、これにより実行可能かをチェックする必要があります。

戻り値
    TRUE        実行中です。
    FALSE       実行中ではない（実行可能）。


--------------------------------------------------------------------------------
BOOL WINAPI SevenZipConfigDialog(const HWND _hwnd,
                                 LPSTR _szOptionBuffer,
                                 const int _iMode)
--------------------------------------------------------------------------------
順序数  11
機能
    解凍のオプション指定ダイアログの表示。

引数
    _hwnd            7-zip32.dll を呼び出すアプリのウィンドウハンドル。
    _szOptionBuffer  現時点では無視。NULL を指定。
    _iMode           現時点では無視。0 を指定。

戻り値
    ERROR_ALREADY_RUNNING   7-zip32.dll が既に実行中の時。
    TRUE                    設定が成功した時。
    FALSE                   設定が出来なかった（されなかった）時
                            または取消終了時。

その他
    現時点ではバージョン情報を表示します。


--------------------------------------------------------------------------------
BOOL WINAPI SevenZipCheckArchive(LPCSTR _szFileName, const int _iMode)
--------------------------------------------------------------------------------
順序数  12
機能
    指定ファイルがサポートしている書庫ファイルとして
    正しいかどうかを返します。

引数
    _szFileName チェックすべき書庫ファイルのファイル名。
    _iMode      チェックモード。
      CHECKARCHIVE_RAPID    簡易モード。
            (0)             ヘッダのチェックだけ行います。ヘッダが暗号化されて
                            いてもパスワードを求めません。
                            場合によってはサポートされていない場合も正しい書庫
                            として返す場合があります。
                            設定していてヘッダが正常ならば TRUE を返します。
      CHECKARCHIVE_BASIC    通常モード。
            (1)             簡易モードとは異なり、正しい書庫か判断します。
                            ヘッダが暗号化されている場合はパスワードを求めます。
      CHECKARCHIVE_FULLCRC  厳密モード。 
            (2)             格納ファイルの CRC もチェックします。
                            書庫のテストを行うので処理が完了するまでに長い時間を
                            要する場合があります。

戻り値
    TRUE        正しい書庫ファイルの時。
    FALSE       ファイルが不正の時。
                SevenZipGetLastError にてエラーの詳細を得られます。


--------------------------------------------------------------------------------
int WINAPI SevenZipGetArchiveType(LPCSTR _szFileName)
--------------------------------------------------------------------------------
順序数  13
機能
    指定したアーカイブファイルの形式を得ます。

引数
    _szFileName  チェックすべき書庫ファイルのファイル名。

戻り値
    ARCHIVETYPE_ZIP (1)  ZIP形式
    ARCHIVETYPE_7Z  (2)  7Z形式

    0                    7-zip32.dll で利用できない形式
    -1                   エラー
                         SevenZipGetLastError にてエラーの詳細を得られます。


--------------------------------------------------------------------------------
int WINAPI SevenZipGetFileCount(LPCSTR _szArcFile)
--------------------------------------------------------------------------------
順序数  17
機能
    指定された書庫ファイルに格納されているファイル数を得ます。

引数
    _szArcFile  格納ファイル数を得たい書庫ファイル名。

戻り値
    格納ファイル数を得る。エラーのときは -1 を返す。
    SevenZipGetLastError にてエラーの詳細を得られます。


--------------------------------------------------------------------------------
BOOL WINAPI SevenZipQueryFunctionList(const int _iFunction)
--------------------------------------------------------------------------------
順序数  18
機能
    指定された API が 7-zip32.dll で使用可能かどうかを得ます。
    アプリケーション側は目的の機能（API）が有効であるかどうか、
    事前にチェックするようにしてください。

引数
    _iFunction  API を示す一意な数値。
                具体的な数値については 7-zip32.h を参照して下さい。

戻り値
    TRUE        使用可能。
    FALSE       使用出来ない、または _iFunction は無効な値。


--------------------------------------------------------------------------------
HARC WINAPI SevenZipOpenArchive(const HWND _hwnd, LPCSTR _szFileName,
                                const DWORD _dwMode)
--------------------------------------------------------------------------------
順序数  21
機能
    指定ファイルが 7-zip32.dll に有効な書庫ファイルかどうか調べ、
    有効であればオープンし、一意の数値（ハンドル）を返します。
    以後の書庫ファイルへのアクセスはこのハンドルでおこないます。
    DLL を開放する際に自動的にハンドルは閉じられますが
    終了の際は、一応 SevenZipCloseArchive() で閉じてください。

引数
    _hwnd       7-zip32.dll を呼び出すアプリのウィンドウハンドル。
    _szFileName 書庫ファイル名。
    _dwMode     処理モードを指定するフラグ。

                M_ERROR_MESSAGE_ON
                  書庫ヘッダが暗号化されている場合
                  パスワードを問い合わせるダイアログを表示します。
                  但し SevenZipSetDefaultPassword() にてグローバルなパスワードが
                  設定されている場合はそのパスワードを書庫に関連付け使用します。
                  この時パスワードが間違ってても書庫のハンドルを返します。
                  フラグを指定していない場合はパスワード未設定のまま開きます。

                M_CHECK_ALL_PATH
                  ファイル名の検索時に全パスを使用して検索します。("-r")

                M_CHECK_FILENAME_ONLY
                  検索時にファイル名のみを対象とします。デフォルト。("-r-")
                  M_CHECK_ALL_PATH と同時に使用するとワイルドカード名に付いては
                  全パスを使用して検索します。("-r0")

戻り値
    指定の書庫ファイルに対応したハンドル。エラー時は NULL を返します。
    SevenZipGetLastError にてエラーの詳細を得られます。

その他
    7-zip32.dll は、同時に複数のハンドルを利用することが可能です。


--------------------------------------------------------------------------------
int WINAPI SevenZipCloseArchive(HARC _harc)
--------------------------------------------------------------------------------
順序数  22
機能
    SevenZipOpenArchive() で割り付けたハンドルを解放します。

引数
    _harc       SevenZipOpenArchive() で返されたハンドル。

戻り値
    正常終了時に 0 、異常時には -1 が返ります。
    SevenZipGetLastError にてエラーの詳細を得られます。


--------------------------------------------------------------------------------
int WINAPI SevenZipFindFirst(HARC _harc, LPCSTR _szWildName,
                             INDIVIDUALINFO *_lpSubInfo)
--------------------------------------------------------------------------------
順序数  23
機能
    最初の格納ファイルの情報を得ます。

引数
    _harc       SevenZipOpenArchive() で返されたハンドル。
    _szWildName 検索するファイル名の指定。
                ワイルドカード指定が可能。
                ファイル名はスペース区切りで複数指定が可能。
    _lpSubInfo  結果を返すための INDIVIDUALINFO 構造体へのポインタ。
                結果を必要としない場合は NULL を指定できます。

戻り値
    0           正常終了。
                _lpSubInfo で指定された構造体に格納ファイルの情報をセット。
    -1          検索終了。
    0，-1 以外  エラー終了。エラーコードを返します。

その他
    書庫のヘッダが暗号化されていて SevenZipSetDefaultPassword() にてパスワードが
    設定されていない場合はパスワードを問い合わせるダイアログを表示します。
    パスワードが設定されている場合はそのパスワードを使用します。
    この時パスワードが間違っていると ERROR_PASSWORD_FILE を返します。


--------------------------------------------------------------------------------
int WINAPI SevenZipFindNext(HARC _harc, INDIVIDUALINFO *_lpSubInfo)
--------------------------------------------------------------------------------
順序数  24
機能
    直前の SevenZipFindFirst() または SevenZipFindNext() の
    次の格納ファイルの情報を得ます。

引数
    _harc       SevenZipOpenArchive() で返されたハンドル。
    _lpSubInfo  結果を返すための INDIVIDUALINFO 構造体へのポインタ。
                結果を必要としない場合は NULL を指定できます。

戻り値
    0           正常終了。
                _lpSubInfo で指定された構造体に格納ファイルの情報をセット。
    -1          検索終了。
    0，-1 以外  エラー終了。エラーコードを返します。


--------------------------------------------------------------------------------
int WINAPI SevenZipGetArcFileName(HARC _harc, LPSTR _lpBuffer, int _nSize)
--------------------------------------------------------------------------------
順序数  31
機能
    書庫ファイル名を得ます。

引数
    _harc       SevenZipOpenArchive() で返されたハンドル。
    _lpBuffer   ファイル名を格納するバッファ。
    _nSize      バッファのサイズ。

戻り値
    正常終了時に 0 、異常時にはエラーコード（ 0 以外）が返ります。


--------------------------------------------------------------------------------
DWORD WINAPI SevenZipGetArcFileSize(HARC _harc)
--------------------------------------------------------------------------------
順序数  32
機能
    書庫ファイルのサイズを得ます。

引数
    _harc       SevenZipOpenArchive() で返されたハンドル。

戻り値
    書庫ファイルのサイズ。エラー時には -1 を返します。
    SevenZipGetLastError にてエラーの詳細を得られます。


--------------------------------------------------------------------------------
DWORD WINAPI SevenZipGetArcOriginalSize(HARC _harc)
--------------------------------------------------------------------------------
順序数  33
機能
    現時点までの検索（SevenZipFindFirst() 及び SevenZipFindNext() ）に
    マッチしたファイルの（解凍後の）サイズの合計を得ます。
    SevenZipFindNext() の検索が終了した後では、
    書庫ファイル中の検索で一致した全ファイルの合計値となります。

引数
    _harc       SevenZipOpenArchive() で返されたハンドル。

戻り値
    合計サイズ。エラー時には -1 を返します。
    SevenZipGetLastError にてエラーの詳細を得られます。


--------------------------------------------------------------------------------
DWORD WINAPI SevenZipGetArcCompressedSize(HARC _harc)
--------------------------------------------------------------------------------
順序数  34
機能
    検索にマッチしたファイルの圧縮サイズの合計を得ます。
    その他詳細は SevenZipGetArcOriginalSize() に準じます。

引数
    _harc       SevenZipOpenArchive() で返されたハンドル。

戻り値
    圧縮サイズの合計。エラー時若しくはソリッド書庫の場合は -1 を返します。
    SevenZipGetLastError にてエラーの詳細を得られます。

注意
    書庫がソリッド書庫か判別するには戻り値ではエラーと識別できない為 
    SevenZipGetArcCompressedSizeEx を使用するか
    SevenZipGetLastError でエラーの詳細を確認して下さい。


--------------------------------------------------------------------------------
WORD WINAPI SevenZipGetArcRatio(HARC _harc)
--------------------------------------------------------------------------------
順序数  35
機能
    検索にマッチしたファイルの全体の圧縮率を得ます。
    その他詳細は SevenZipGetArcOriginalSize() に準じます。

引数
    _harc       SevenZipOpenArchive() で返されたハンドル。

戻り値
    全体の圧縮率（パーミル）。エラー時には -1。
    ソリッド書庫の場合は 0 を返す。
    SevenZipGetLastError にてエラーの詳細を得られます。


--------------------------------------------------------------------------------
WORD WINAPI SevenZipGetArcDate(HARC _harc)
--------------------------------------------------------------------------------
順序数  36
機能
    書庫ファイルの日付を DOS 形式 (ローカルタイム) で得ます。

引数
    _harc       SevenZipOpenArchive() で返されたハンドル。

戻り値
    書庫ファイルの日付。エラー時には -1。
    形式は MSDOS のタイムスタンプに準じます。
    SevenZipGetLastError にてエラーの詳細を得られます。


--------------------------------------------------------------------------------
WORD WINAPI SevenZipGetArcTime(HARC _harc)
--------------------------------------------------------------------------------
順序数  37
機能
    書庫ファイルの時刻を DOS 形式 (ローカルタイム) で得ます。

引数
    _harc       SevenZipOpenArchive() で返されたハンドル。

戻り値
    書庫ファイルの時刻。エラー時には -1。
    形式は MSDOS のタイムスタンプに準じます。
    SevenZipGetLastError にてエラーの詳細を得られます。


--------------------------------------------------------------------------------
UINT WINAPI SevenZipGetArcOSType(HARC _harc)
--------------------------------------------------------------------------------
順序数  38
機能
    書庫ファイル作成に使用された OS の種類を得ます。

引数
    _harc       SevenZipOpenArchive() で返されたハンドル。

戻り値
    OS の種類を示す数値。
    0 : MS-DOS  1 : PRIMOS  2 : UNIX    3 : AMIGA
    4 : MAC-OS  5 : OS/2    6 : APPLE GS    7 : ATARI ST
    8 : NEXT    9 : VAX VMS 10: その他。
    11: OS9     12: OS/68K  13: OS/386  14: HUMAN
    15: CP/M    16: FLEX    17: Runser
    18: VM CMS  19: Z SYSTEM    20: TOPS20  21: Windows NTFS
    -1: エラー。

    ※ 現時点ではエラー時以外は必ず 0 を返します。


--------------------------------------------------------------------------------
int WINAPI SevenZipIsSFXFile(HARC _harc)
--------------------------------------------------------------------------------
順序数  39
機能
    書庫ファイルが自己解凍ファイルかどうかを調べます。

引数
    _harc       SevenZipOpenArchive() で返されたハンドル。

戻り値
    0   通常の書庫ファイル。
    1   自己解凍ファイル。
    -1  エラー。

    ※ 現時点ではエラー時以外は必ず 0 を返します。


--------------------------------------------------------------------------------
int WINAPI SevenZipGetFileName(HARC _harc, LPCSTR _lpBuffer, int _nSize)
--------------------------------------------------------------------------------
順序数  40
機能
    格納ファイルのファイル名を得ます。

引数
    _harc       SevenZipOpenArchive() で返されたハンドル。
    _lpBuffer   ファイル名を格納するバッファ。
    _nSize      バッファのサイズ。

戻り値
    正常終了時には 0 が返され、_lpBuffer にファイル名が格納されます。
    SevenZipGetLastError にてエラーの詳細を得られます。

その他
    「格納ファイル」とは、直前の検索（SevenZipFindFirst() 又は
    SevenZipFindNext() ）にマッチしたファイルを示します。
    以下の各 API でも同様です。


--------------------------------------------------------------------------------
DWORD WINAPI SevenZipGetOriginalSize(HARC _harc)
--------------------------------------------------------------------------------
順序数  41
機能
    格納ファイルの（解凍後の）サイズを得ます。

引数
    _harc       SevenZipOpenArchive() で返されたハンドル。

戻り値
    格納ファイルのサイズ。エラー時は -1。
    SevenZipGetLastError にてエラーの詳細を得られます。


--------------------------------------------------------------------------------
DWORD WINAPI SevenZipGetCompressedSize(HARC _harc)
--------------------------------------------------------------------------------
順序数  42
機能
    格納ファイルの圧縮サイズを得ます。

引数
    _harc       SevenZipOpenArchive() で返されたハンドル。

戻り値
    格納ファイルの圧縮サイズ。エラー時は -1。
    ソリッド書庫の場合は 0 を返します。
    SevenZipGetLastError にてエラーの詳細を得られます。


--------------------------------------------------------------------------------
WORD WINAPI SevenZipGetRatio(HARC _harc)
--------------------------------------------------------------------------------
順序数  43
機能
    格納ファイルの圧縮率を得ます。

引数
    _harc       SevenZipOpenArchive() で返されたハンドル。

戻り値
    格納ファイルの圧縮率（パーミル）。エラー時は -1。
    ソリッド書庫の場合は 0 を返します。
    SevenZipGetLastError にてエラーの詳細を得られます。


--------------------------------------------------------------------------------
WORD WINAPI SevenZipGetDate(HARC _harc)
--------------------------------------------------------------------------------
順序数  44
機能
    格納ファイルの日付を DOS 形式 (ローカルタイム) で得ます。

引数
    _harc       SevenZipOpenArchive() で返されたハンドル。

戻り値
    格納ファイルの日付。エラー時は -1。
    形式は MSDOS のタイムスタンプに準じます。
    SevenZipGetLastError にてエラーの詳細を得られます。


--------------------------------------------------------------------------------
WORD WINAPI SevenZipGetTime(HARC _harc)
--------------------------------------------------------------------------------
順序数  45
機能
    格納ファイルの時刻を DOS 形式 (ローカルタイム) で得ます。

引数
    _harc       SevenZipOpenArchive() で返されたハンドル。

戻り値
    格納ファイルの時刻。エラー時は -1。
    形式は MSDOS のタイムスタンプに準じます。
    SevenZipGetLastError にてエラーの詳細を得られます。


--------------------------------------------------------------------------------
DWORD WINAPI SevenZipGetCRC(HARC _harc)
--------------------------------------------------------------------------------
順序数  46
機能
    格納ファイルのチェックコード（ CRC やチェックサム等）を得ます。

引数
    _harc       SevenZipOpenArchive() で返されたハンドル。

戻り値
    格納ファイルのチェックコード。エラー時は -1。
    SevenZipGetLastError にてエラーの詳細を得られます。

その他
    取得された結果が 0xFFFFFFFF(-1) の場合、エラーと同一になってしまいます。
    本当にエラーかどうかは SevenZipGetLastError で確認できます。


--------------------------------------------------------------------------------
int WINAPI SevenZipGetAttribute(HARC _harc)
--------------------------------------------------------------------------------
順序数  47
機能
    格納ファイルの属性を得ます。

引数
    _harc       SevenZipOpenArchive() で返されたハンドル。

戻り値
    格納ファイルの属性。以下の各ビットをオア（|）接続したもの。
    エラー時は -1。
    SevenZipGetLastError にてエラーの詳細を得られます。

    0x01    FA_RDONLY       読み込み専用ファイル。
    0x02    FA_HIDDEN       不可視属性ファイル。
    0x04    FA_SYSTEM       システムファイル。
    0x08    FA_LABEL        ボリュームラベル。
    0x10    FA_DIREC        ディレクトリ。
    0x20    FA_ARCH         保存ビット。
    0x40    FA_ENCRYPTED    パスワード保護されたファイル。


--------------------------------------------------------------------------------
UINT WINAPI SevenZipGetOSType(HARC _harc)
--------------------------------------------------------------------------------
順序数  48
機能
    格納ファイルが作成された OS を得ます。

引数
    _harc       SevenZipOpenArchive() で返されたハンドル。

戻り値
    OS を示す数値。
    詳細は SevenZipGetArcOSType() を参照。

    ※ 現時点ではエラー時以外は必ず 0 を返します。


--------------------------------------------------------------------------------
int WINAPI SevenZipGetMethod(HARC _harc, LPSTR _lpBuffer, const int _nSize)
--------------------------------------------------------------------------------
順序数	61
機能
    格納ファイルの圧縮法を得ます。

引数
    _harc       SevenZipOpenArchive() で返されたハンドル。
    _lpBuffer   メソッド名を格納するバッファ。
    _nSize      バッファのサイズ。

戻り値
    正常終了時には 0 が返され、_lpBuffer に圧縮法式を示す文字列が格納されます。
    _nSize が 8 の時は INDIVIDUALINFO 構造体の szMode と同じ物が
    格納されますが、それ以外の場合はより詳しい情報が格納されます。
    但し、バッファに入りきらない分は切り捨てられエラーを返します。
    SevenZipGetLastError にてエラーの詳細を得られます。

    例)
    szMode　| _lpBuffer (_nSize != 8)
    --------+------------------------
    LZMA    | LZMA:20
    PPMD    | PPMD:o6:mem24


--------------------------------------------------------------------------------
DWORD WINAPI SevenZipGetWriteTime(HARC _harc)
--------------------------------------------------------------------------------
順序数  62
機能
    格納ファイルの最終更新日時 (UTC) を得ます。

引数
    _harc       SevenZipOpenArchive() で返されたハンドル。

戻り値
    格納ファイルの UNIX 形式の UTC による更新日時。エラー時は -1。
    SevenZipGetLastError にてエラーの詳細を得られます。


--------------------------------------------------------------------------------
DWORD WINAPI SevenZipGetCreateTime(HARC _harc)
--------------------------------------------------------------------------------
順序数  63
機能
    格納ファイルの作成日時 (UTC) を得ます。

引数
    _harc       SevenZipOpenArchive() で返されたハンドル。

戻り値
    格納ファイルの UNIX 形式の UTC による作成日時。エラー時は -1。
    SevenZipGetLastError にてエラーの詳細を得られます。

注意
    書庫に作成日時の情報が記録されていない場合は更新日時を返し
    SevenZipGetLastError に ERROR_GET_TIME が設定されます。


--------------------------------------------------------------------------------
DWORD WINAPI SevenZipGetAccessTime(HARC _harc)
--------------------------------------------------------------------------------
順序数  64
機能
    格納ファイルの参照日時 (UTC) を得ます。

引数
    _harc       SevenZipOpenArchive() で返されたハンドル。

戻り値
    格納ファイルの UNIX 形式の UTC による参照日時。エラー時は -1。
    SevenZipGetLastError にてエラーの詳細を得られます。

注意
    書庫に参照日時の情報が記録されていない場合は更新日時を返し
    SevenZipGetLastError に ERROR_GET_TIME が設定されます。


--------------------------------------------------------------------------------
BOOL WINAPI SevenZipGetWriteTimeEx(HARC _harc, FILETIME *_lpftLastWriteTime)
--------------------------------------------------------------------------------
順序数  65
機能
    格納ファイルの最終更新日時 (UTC) を得ます。

引数
    _harc               SevenZipOpenArchive() で返されたハンドル。
    _lpftLastWriteTime  情報を格納する FILETIME 構造体へのポインタ。

戻り値
    正常終了時は TRUE を、そうでない場合は FALSE を返し、
    指定された FILETIME 構造体に最終更新日時を格納します。
    FILETIME 形式とは、Jan.1,1601 00:00:00 からの 100ns 単位の
    経過時間を 64bit の数値で表したものです。
    詳しくは Win32 API のヘルプ等を参照してください。
    SevenZipGetLastError にてエラーの詳細を得られます。


--------------------------------------------------------------------------------
BOOL WINAPI SevenZipGetCreateTimeEx(HARC _harc, FILETIME *_lpftCreationTime)
--------------------------------------------------------------------------------
順序数  66
機能
    格納ファイルの作成日時 (UTC) を得ます。

引数
    _harc               SevenZipOpenArchive() で返されたハンドル。
    _lpftCreationTime   情報を格納する FILETIME 構造体へのポインタ。

戻り値
    正常終了時は TRUE を、そうでない場合は FALSE を返し、
    指定された FILETIME 構造体に最終更新日時を格納します。
    FILETIME 形式とは、Jan.1,1601 00:00:00 からの 100ns 単位の
    経過時間を 64bit の数値で表したものです。
    詳しくは Win32 API のヘルプ等を参照してください。
    SevenZipGetLastError にてエラーの詳細を得られます。

注意
    書庫に作成日時の情報が記録されていない場合は更新日時を格納し TRUE を
    返しますが SevenZipGetLastError に ERROR_GET_TIME が設定されます。


--------------------------------------------------------------------------------
BOOL WINAPI SevenZipGetAccessTimeEx(HARC _harc, FILETIME *_lpftLastAccessTime)
--------------------------------------------------------------------------------
順序数  67
機能
    格納ファイルの参照日時 (UTC) を得ます。

引数
    _harc               SevenZipOpenArchive() で返されたハンドル。
    _lpftLastAccessTime 情報を格納する FILETIME 構造体へのポインタ。

戻り値
    正常終了時は TRUE を、そうでない場合は FALSE を返し、
    指定された FILETIME 構造体に最終更新日時を格納します。
    FILETIME 形式とは、Jan.1,1601 00:00:00 からの 100ns 単位の
    経過時間を 64bit の数値で表したものです。
    詳しくは Win32 API のヘルプ等を参照してください。
    SevenZipGetLastError にてエラーの詳細を得られます。

注意
    書庫に参照日時の情報が記録されていない場合は更新日時を格納し TRUE を
    返しますが SevenZipGetLastError に ERROR_GET_TIME が設定されます。


--------------------------------------------------------------------------------
BOOL WINAPI SevenZipGetArcCreateTimeEx(HARC _harc, FILETIME *_lpftCreationTime)
--------------------------------------------------------------------------------
順序数  68
機能
    書庫の作成日時 (UTC) を得ます。

引数
    _harc               SevenZipOpenArchive() で返されたハンドル。
    _lpftCreationTime   情報を格納する FILETIME 構造体へのポインタ。

戻り値
    正常終了時は TRUE を、そうでない場合は FALSE を返し、
    指定された FILETIME 構造体に最終更新日時を格納します。
    FILETIME 形式とは、Jan.1,1601 00:00:00 からの 100ns 単位の
    経過時間を 64bit の数値で表したものです。
    詳しくは Win32 API のヘルプ等を参照してください。
    SevenZipGetLastError にてエラーの詳細を得られます。


--------------------------------------------------------------------------------
BOOL WINAPI SevenZipGetArcAccessTimeEx(HARC _harc,
                                       FILETIME *_lpftLastAccessTime)
--------------------------------------------------------------------------------
順序数  69
機能
    書庫の参照日時 (UTC) を得ます。

引数
    _harc               SevenZipOpenArchive() で返されたハンドル。
    _lpftLastAccessTime 情報を格納する FILETIME 構造体へのポインタ。

戻り値
    正常終了時は TRUE を、そうでない場合は FALSE を返し、
    指定された FILETIME 構造体に最終更新日時を格納します。
    FILETIME 形式とは、Jan.1,1601 00:00:00 からの 100ns 単位の
    経過時間を 64bit の数値で表したものです。
    詳しくは Win32 API のヘルプ等を参照してください。
    SevenZipGetLastError にてエラーの詳細を得られます。


--------------------------------------------------------------------------------
BOOL WINAPI SevenZipGetArcWriteTimeEx(HARC _harc, FILETIME *_lpftLastWriteTime)
--------------------------------------------------------------------------------
順序数  70
機能
    書庫の最終更新日時 (UTC) を得ます。

引数
    _harc               SevenZipOpenArchive() で返されたハンドル。
    _lpftLastWriteTime  情報を格納する FILETIME 構造体へのポインタ。

戻り値
    正常終了時は TRUE を、そうでない場合は FALSE を返し、
    指定された FILETIME 構造体に最終更新日時を格納します。
    FILETIME 形式とは、Jan.1,1601 00:00:00 からの 100ns 単位の
    経過時間を 64bit の数値で表したものです。
    詳しくは Win32 API のヘルプ等を参照してください。
    SevenZipGetLastError にてエラーの詳細を得られます。


--------------------------------------------------------------------------------
BOOL WINAPI SevenZipSetOwnerWindow(HWND _hwnd)
--------------------------------------------------------------------------------
順序数  90
機能
    7-zip32.dll のメッセージの送信先ウィンドウを設定します。
    7-zip32.dll はここで指定されたウィンドウに圧縮解凍状況を知らせる
    メッセージを送信します。メッセージの詳細については
    下記「ウィンドウズ・メッセージ」を参照。

引数
    _hwnd       メッセージを受け取るウィンドウのハンドル

戻り値
    正常終了の場合 TRUE を返します。
    動作中で変更できなかった場合や、既にこの API で別のウィンドウが
    設定されている場合には FALSE を返します。
    SevenZipGetLastError にてエラーの詳細を得られます。


--------------------------------------------------------------------------------
BOOL WINAPI SevenZipClearOwnerWindow(VOID)
--------------------------------------------------------------------------------
順序数  91
機能
    SevenZipSetOwnerWindow() で設定したウィンドウの設定を解除します。

戻り値
    正常終了の場合 TRUE を返します。
    動作中で変更できなかった場合には FALSE を返します。
    SevenZipGetLastError にてエラーの詳細を得られます。


--------------------------------------------------------------------------------
BOOL WINAPI SevenZipSetOwnerWindowEx(HWND _hwnd, LPARCHIVERPROC _lpArcProc)
--------------------------------------------------------------------------------
順序数  92
機能
    7-zip32.dll の圧縮解凍状況を受け取るためのコールバック関数の指定を行います。
    _lpArcProc に NULL を指定すると _hwnd で指定したウィンドウに
    メッセージを送出します（SevenZipSetOwnerWindow(_hwnd)と同じ）。

引数
    _hwnd       メッセージを受け取るウィンドウのハンドル。
    _lpArcProc  処理を渡すコールバック関数のポインタ。

戻り値
    正常終了の場合 TRUE を返します。
    動作中で変更できなかった場合や、既にこの API で別のウィンドウが
    設定されている場合には FALSE を返します。
    SevenZipGetLastError にてエラーの詳細を得られます。


--------------------------------------------------------------------------------
BOOL WINAPI SevenZipKillOwnerWindowEx(HWND _hwnd)
--------------------------------------------------------------------------------
順序数  93
機能
    SevenZipSetOwnerWindowEx() で設定したウィンドウの設定を解除します。

戻り値
    正常終了の場合 TRUE を返します。
    動作中で変更できなかった場合や指定した _hwnd が現在の設定と
    一致しない場合には FALSE を返します。
    SevenZipGetLastError にてエラーの詳細を得られます。


--------------------------------------------------------------------------------
WORD WINAPI SevenZipGetSubVersion(VOID)
--------------------------------------------------------------------------------
順序数  94
機能
    7-zip32.dll のバージョンを返します。

戻り値
    現在のバージョンの下位 2 ワードに 100 を掛けたものが返ってきます。
    例) 4.01 -> 401


--------------------------------------------------------------------------------
BOOL WINAPI SevenZipGetArcFileSizeEx(HARC _harc, ULHA_INT64 *_lpllSize)
--------------------------------------------------------------------------------
順序数  103
機能
    書庫ファイルのサイズを 64 ビット整数で得ます。

引数
    _harc       SevenZipOpenArchive() で返されたハンドル。
    _lpllSize   情報を格納するためのバッファへのポインタ。
                VC++ や C++ Builder 5.x 等では実体は LONGLONG となっています。
                BC++ 等 64ビット整数として LONGLONG を扱えない
                コンパイラを使用する場合には、(アラインメントのない)
                LARGE_INTEGER 等で代用してください。

戻り値
    正常終了時は TRUE。エラー時には FALSE を返します。
    SevenZipGetLastError にてエラーの詳細を得られます。

注意
    格納ファイルの合計サイズではなく、書庫そのもののサイズであることに
    注意してください。


--------------------------------------------------------------------------------
BOOL WINAPI SevenZipGetArcOriginalSizeEx(HARC _harc, ULHA_INT64 *_lpllSize)
--------------------------------------------------------------------------------
順序数  104
機能
    検索にマッチしたファイルのサイズの合計を 64 ビット整数で得ます。
    SevenZipFindNext() の検索が終了した後でないと返却値に意味はありません。
    検索中の場合はそれまでにマッチしたファイルの合計となります。

引数
    _harc       SevenZipOpenArchive() で返されたハンドル。
    _lpllSize   情報を格納するためのバッファへのポインタ。
                VC++ や C++ Builder 5.x 等では実体は LONGLONG となっています。
                BC++ 等 64ビット整数として LONGLONG を扱えない
                コンパイラを使用する場合には、(アラインメントのない)
                LARGE_INTEGER 等で代用してください。

戻り値
    正常終了時は TRUE。エラー時には FALSE を返します。
    SevenZipGetLastError にてエラーの詳細を得られます。

注意
    SevenZipFindNext() の検索が終了してから呼び出すようにしてください。


--------------------------------------------------------------------------------
BOOL WINAPI SevenZipGetArcCompressedSizeEx(HARC _harc, ULHA_INT64 *_lpllSize)
--------------------------------------------------------------------------------
順序数  105
機能
    検索にマッチしたファイルの圧縮サイズの合計を64 ビット整数で得ます。

引数
    _harc       SevenZipOpenArchive() で返されたハンドル。
    _lpllSize   情報を格納するためのバッファへのポインタ。
                VC++ や C++ Builder 5.x 等では実体は LONGLONG となっています。
                BC++ 等 64ビット整数として LONGLONG を扱えない
                コンパイラを使用する場合には、(アラインメントのない)
                LARGE_INTEGER 等で代用してください。

戻り値
    正常終了時は TRUE。エラー時には FALSE を返します。
    SevenZipGetLastError にてエラーの詳細を得られます。

注意
    SevenZipFindNext() の検索が終了してから呼び出すようにしてください。
    但し、ソリッド書庫か判定する場合はこの限りではありません。
    TRUE が返り _lpllSize に -1 が格納されていればソリッド書庫です。


--------------------------------------------------------------------------------
BOOL WINAPI SevenZipGetOriginalSizeEx(HARC _harc, ULHA_INT64 *_lpllSize)
--------------------------------------------------------------------------------
順序数  106
機能
    格納ファイルのサイズを 64 ビット整数で得ます。

引数
    _harc       SevenZipOpenArchive() で返されたハンドル。
    _lpllSize   情報を格納するためのバッファへのポインタ。
                VC++ や C++ Builder 5.x 等では実体は LONGLONG となっています。
                BC++ 等 64ビット整数として LONGLONG を扱えない
                コンパイラを使用する場合には、(アラインメントのない)
                LARGE_INTEGER 等で代用してください。

戻り値
    正常終了時は TRUE。エラー時には FALSE を返します。
    SevenZipGetLastError にてエラーの詳細を得られます。


--------------------------------------------------------------------------------
BOOL WINAPI SevenZipGetCompressedSizeEx(HARC _harc, ULHA_INT64 *_lpllSize)
--------------------------------------------------------------------------------
順序数  107
機能
    格納ファイルの圧縮サイズを 64 ビット整数で得ます。

引数
    _harc       SevenZipOpenArchive() で返されたハンドル。
    _lpllSize   情報を格納するためのバッファへのポインタ。
                VC++ や C++ Builder 5.x 等では実体は LONGLONG となっています。
                BC++ 等 64ビット整数として LONGLONG を扱えない
                コンパイラを使用する場合には、(アラインメントのない)
                LARGE_INTEGER 等で代用してください。

戻り値
    正常終了時は TRUE。エラー時には FALSE を返します。
    SevenZipGetLastError にてエラーの詳細を得られます。


--------------------------------------------------------------------------------
BOOL WINAPI SevenZipSetOwnerWindowEx64(HWND _hwnd,
                                       LPARCHIVERPROC _lpArcProc,
                                       DWORD _dwStructSize)
--------------------------------------------------------------------------------
順序数  108
機能
    7-zip32.dll の圧縮解凍状況を受け取るためのコールバック関数の指定を行います。
    _lpArcProc に NULL を指定すると _hwnd で指定したウィンドウに
    メッセージを送出します（SevenZipSetOwnerWindow(_hwnd)と同じ）。

引数
    _hwnd         メッセージを受け取るウィンドウのハンドル。
    _lpArcProc    処理を渡すコールバック関数のポインタ。
    _dwStructSize 使用する構造体のサイズを指定。
                  EXTRACTINGINFOEX, EXTRACTINGINFOEX32,
                  EXTRACTINGINFOEX64 の内のどれかのサイズ。

戻り値
    正常終了の場合 TRUE を返します。
    動作中で変更できなかった場合や、既にこの API で別のウィンドウが
    設定されている場合には FALSE を返します。


--------------------------------------------------------------------------------
BOOL WINAPI SevenZipKillOwnerWindowEx64(HWND _hwnd)
--------------------------------------------------------------------------------
順序数  109
機能
    SevenZipSetOwnerWindowEx64() で設定したウィンドウの設定を解除します。

戻り値
    正常終了の場合 TRUE を返します。
    動作中で変更できなかった場合や指定した _hwnd が現在の設定と
    一致しない場合には FALSE を返します。


--------------------------------------------------------------------------------
BOOL WINAPI SevenZipSetPriority(const int  _nPriority)
--------------------------------------------------------------------------------
順序数  119
機能
    7-zip32.dll の優先順位 (プライオリティ) を指定します。

引数
    _nPriority    優先順位。
                  WindowsAPI の SetThreadPriority() で指定する値と同じです。
         
戻り値
    正常終了時は TRUE。エラー時には FALSE を返します。
    SevenZipGetLastError にてエラーの詳細を得られます。

その他
    UNLHA32.DLL の UnlhaSetPriority() と同様な機能になりますが
    SetThreadPriority() で指定できる以外の優先順位を指定しても意味は有りません。
    そして、通常より低い優先度を指定しても Sleep() API を呼びだしてウエイトを
    入れていないので CPU の負荷は最大になります。

    圧縮／解凍時の経過ダイアログでバックグラウンドのボタンを押すと
    ここでの設定にかかわらず優先度を THREAD_PRIORITY_IDLE に切り替え
    解除するとこの API で指定した優先度に戻ります。
    THREAD_PRIORITY_IDLE を指定していた場合はバックグラウンドを設定した
    状態で実行され、解除すると THREAD_PRIORITY_NORMAL に設定されます。


--------------------------------------------------------------------------------
int WINAPI SevenZipGetLastError(LPDWORD _lpdwSystemError)
--------------------------------------------------------------------------------
順序数  123
機能
    7-zip32.dll の最新のエラーコードを取得します。

引数
    _lpdwSystemError    7-zip32.dll がエラーコードを設定した時点でのシステムの
                        エラーコード (GetLastError() API を実行して得られたもの)
                        を格納するためのバッファへのポインタ。
                        不要な場合は NULL を指定する事が出来ます。

戻り値
    7-zip32.dll の最新のエラーコードが返されます。
    一部の API では正常終了しても 0 以外が設定される場合があります。

注意
    7-zip32.dll は，各 API の実行開始時に内部的に保持しているエラーコードの
    クリアを行います。


--------------------------------------------------------------------------------
int WINAPI SevenZipSetDefaultPassword(HARC _harc, LPCSTR _szPassword)
--------------------------------------------------------------------------------
順序数  178
機能
    書庫の情報を得る際に使用する標準パスワードを設定します。

引数
    _harc       SevenZipOpenArchive() で返されたハンドル。
                NULL を指定するとグローバルなパスワードが設定されます。
    _szPassword 標準として設定したいパスワード。
                NULL を設定すると設定が解除されます。

戻り値
    正常終了時は 0。エラー時にはその他を返します。
    SevenZipGetLastError にてエラーの詳細を得られます。

その他
    書庫のヘッダが暗号化されていた場合、SevenZipOpenArchive() 等で書庫の
    情報を得ようとするとパスワードを求めるダイアログが表示されますが
    あらかじめ設定しておけばその動作を抑制できます。
    グローバルなパスワードは全ての書庫に於いてそのパスワードが使用されます。
    ただし、別に _harc に関連付けられたパスワードが設定されている場合
    その書庫に対しては関連付けられたパスワードが使用されます。
    パスワードを解除する場合に空の文字列を指定しても空の文字列と言う
    パスワードが設定されるので解除する事はできません。
    この API にてパスワードを設定しても SevenZip() にてコマンドを送る際には
    影響は有りません。明示的に -p スイッチで指定する必要が有ります。
    SevenZipOpenArchive() 後に連続してファイルの抽出等を行いたい場合は
    書庫のハンドルを閉じる前に SevenZipGetDefaultPassword() でパスワードを
    取得して、コマンドに -p スイッチを付けて送信してください。


--------------------------------------------------------------------------------
DWORD WINAPI SevenZipGetDefaultPassword(HARC _harc,
                                        LPSTR _szPassword,
                                        DWORD _dwSize)
--------------------------------------------------------------------------------
順序数  179
機能
    書庫の情報を得る際に使用する標準パスワードを取得します。

引数
    _harc       SevenZipOpenArchive() で返されたハンドル。
                NULL を指定するとグローバルなパスワードを取得します。
    _szPassword 標準パスワードを格納するバッファ。
    _dwSize     バッファのサイズ。

戻り値
    正常終了時は 0。エラーまたは標準パスワードが設定されていないときは -1。
    バッファの容量不足の際は必要なバイト数を返します。
    SevenZipGetLastError にてエラーの詳細を得られます。

// ここまでチェック
--------------------------------------------------------------------------------
int WINAPI SevenZipPasswordDialog(HWND _hwnd, LPSTR _szBuffer, DWORD _dwSize)
--------------------------------------------------------------------------------
順序数  180
機能
    7-zip32.dll 標準のパスワード入力ダイアログを表示します。

引数
    _hwnd       7-zip32.dll を呼び出すアプリのウィンドウハンドル。
    _szPassword 標準パスワードを格納するバッファ。
    _dwSize     バッファのサイズ。

戻り値
    正常終了時は 0。キャンセルされた場合は -1。
    エラー時はその他を返します。


--------------------------------------------------------------------------------
BOOL WINAPI SevenZipSetUnicodeMode(BOOL _bUnicode)
--------------------------------------------------------------------------------
順序数  200
機能
    使用する文字コードを UTF-8 に設定、及び解除を行います。

引数
    _bUnicode   TRUE を設定すると UTF-8 が使用されます。
                FALSE を設定すると OEM コードセットが使用されます。

戻り値
    正常終了時は TRUE。エラー時には FALSE を返します。


--------------------------------------------------------------------------------
int WINAPI SevenZipSfxConfigDialog(HWND _hwnd, LPSTR _szBuffer, DWORD _dwSize)
--------------------------------------------------------------------------------
順序数  210
機能
    7-zip32.dll 標準の SFX 設定ダイアログを表示します。

引数
    _hwnd       7-zip32.dll を呼び出すアプリのウィンドウハンドル。
    _szBuffer   SFX 設定ファイルのテキストを格納するバッファ。
                常に UTF-8 文字列で格納されます。
    _dwSize     バッファのサイズ。

戻り値
    正常終了時は 0。キャンセルされた場合は -1。
    エラー時はその他を返します。


--------------------------------------------------------------------------------
BOOL WINAPI SevenZipSfxFileStoring(LPCSTR _szFileName)
--------------------------------------------------------------------------------
順序数  211
機能
    7-zip32.dll 内蔵 SFX モジュールをファイルに保存します。

引数
    _szFileName SFX モジュールを保存するファイル名。

戻り値
    正常終了時は TRUE。既にファイルが存在する等エラー時には FALSE を返します。


--------------------------------------------------------------------------------
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;

メンバの説明
    dwOriginalSize      ファイルのサイズ。
    dwCompressedSize    圧縮後のサイズ。
    dwCRC               ファイルのチェックサム用 CRC。
    uFlag               7-zip32.dll では常に 0。
    uOSType             ファイルを格納した際に使われた OS。
                        現状では常に 0。
    wRatio              パーミル (千分率) で表された圧縮率。
                        ソリッド書庫の場合は常に 0。
    wDate               ファイルの更新日付(DOS 形式)。
    wTime               ファイルの更新時間(DOS 形式)。
    szFileName          アーカイブファイル名。
    szAttribute         ファイルの属性。
    szMode              7-zip32.dll では圧縮方式の文字列が格納。


--------------------------------------------------------------------------------
ウィンドウズ・メッセージ
--------------------------------------------------------------------------------
●wm_arcextract

wm_arcextract

nMode = (int)wParam                 /* 通知モードを表す */
lpEis = (LPEXTRACTINGINFO)lParam    /* 構造体を指すポインタ */

　wm_arcextract メッセージは、SevenZipSetOwnerWindow() で設定した
ウィンドウに 7-zip32.dll から送られます。
このメッセージを受け取ることにより 7-zip32.dll がこれから処理する
格納ファイル名やファイルサイズ等を得ることができます。
　SevenZipSetOwnerWindowEx(), SevenZipSetOwnerWindowEx64() にて
_lpArcProc に NULL を指定した際にも送られてきます。
この時 lpEis の値は ARCHIVERPROC に渡される _lpEis のポインタとなり
設定するモードによって構造体が変わります。

nMode       wParam の値です。7-zip32.dll の処理の状態を表します。
lpEis       lParam の値です。 ファイル名等を格納する
            EXTRACTINGINFO 構造体を指すポインタです。

戻り値

　このメッセージを処理するアプリケーションは、
FALSEを返さなければなりません。
FALSE 以外を返すことにより、7-zip32.dll の処理を
中止させることができます。


--------------------------------------------------------------------------------
コールバック関数
--------------------------------------------------------------------------------

7-zip32.dll の処理状況に応じて、SevenZipSetOwnerWindowEx() 及び
SevenZipSetOwnerWindowEx64() で設定したコールバック関数が呼ばれます。
このコールバック関数に渡される引数により、7-zip32.dll が
これから処理する格納ファイル名やファイルサイズ等を得ることができます。

  typedef BOOL CALLBACK ARCHIVERPROC(HWND _hwnd, UINT _uMsg,
                                     UINT _nState, LPVOID _lpEis);

  _hwnd     SevenZipSetOwnerWindowEx(), SevenZipSetOwnerWindowEx64()
            で指定したウィンドウハンドルが渡されます。
  _uMsg     現在のところは wm_arcextract となります。
  _nState   wm_arcextract の wParam、つまり nMode と同じ意味です。
  _lpEis    構造体へのポインタで格納ファイルに関する情報が得られます。
            実際には次のどれかとなります。

            LPEXTRACTINGINFOEX _lpEis
              SevenZipSetOwnerWindowEx() か sizeof(EXTRACTINGINFOEX)
              を指定して SevenZipSetOwnerWindowEx64() を使用した場合。
            LPEXTRACTINGINFOEX32 _lpEis
              sizeof(EXTRACTINGINFOEX32) を指定して
              SevenZipSetOwnerWindowEx64() を使用した場合。
            LPEXTRACTINGINFOEX64 _lpEis
             　sizeof(EXTRACTINGINFOEX64) を指定して
               SevenZipSetOwnerWindowEx64() を使用した場合。

ARCHIVERPROC は 7-zip32.dll に処理を継続させるときは TRUE､
中止させるときは FALSE を返さなければなりません。


--------------------------------------------------------------------------------
EXTRACTINGINFO の構造
--------------------------------------------------------------------------------
構造体定義
    typedef struct {
        DWORD   dwFileSize;
        DWORD   dwWriteSize;
        char    szSourceFileName[FNAME_MAX32 + 1];
        char    dummy1[3];
        char    szDestFileName[FNAME_MAX32 + 1];
        char    dummy[3];
    } EXTRACTINGINFO;


メンバの説明

    dwFileSize          全処理ファイルの合計サイズ。
                        全体のサイズが 0xFFFFFFFF(-1) 以上の場合は
                        0xFFFFFFFF(-1) を格納する。
    dwWriteSize         圧縮解凍処理で処理した全体のサイズ。
                        dwFileSize が 0xFFFFFFFF(-1) の場合は
                        全体の処理率（パーミル）を格納する。
    szSourceFileName    処理する書庫内の格納ファイル名。
    szDestFileName      実際に書(読)込みされるディスク上のファイルのフルパス。


--------------------------------------------------------------------------------
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 構造体が格納されます。
    dwCompressedSize    格納ファイルの圧縮サイズ。
                        圧縮サイズが 0xFFFFFFFF(-1) 以上の場合は
                        0xFFFFFFFF(-1) を格納する。
    dwCRC               格納ファイルのチェックサム。
    uOSType             ファイルを格納した際に使われた OS。
                        現状では常に 0。
    wRatio              パーミル (千分率) で表された圧縮率。
                        ソリッド書庫の場合は常に 0。
    wDate               ファイルの更新日付(DOS 形式)。
    wTime               ファイルの更新時間(DOS 形式)。
    szAttribute         ファイルの属性。
    szMode              7-zip32.dll では圧縮方式の文字列が格納。


--------------------------------------------------------------------------------
EXTRACTINGINFOEX32 の構造
--------------------------------------------------------------------------------
構造体定義
    typedef struct {
        DWORD           dwStructSize;
        EXTRACTINGINFO  exinfo;
        DWORD           dwFileSize;
        DWORD           dwCompressedSize;
        DWORD           dwWriteSize;
        DWORD           dwAttributes;
        DWORD           dwCRC;
        UINT            uOSType;
        WORD            wRatio;
        FILETIME        ftCreateTime;
        FILETIME        ftAccessTime;
        FILETIME        ftWriteTime;
        char            szMode[8];
        char            szSourceFileName[FNAME_MAX32 + 1];
        char            dummy1[3];
        char            szDestFileName[FNAME_MAX32 + 1];
        char            dummy2[3];
    } EXTRACTINGINFOEX32;


メンバの説明

    dwStructSize        構造体のサイズ。
    exinfo              EXTRACTINGINFO 構造体が格納されます。
                        互換性のために残してあるだけです。
    dwFileSize          全処理ファイルの合計サイズ。
                        全体のサイズが 0xFFFFFFFF(-1) 以上の場合は
                        0xFFFFFFFF(-1) を格納する。
    dwCompressedSize    格納ファイルの圧縮サイズ。
                        圧縮サイズが 0xFFFFFFFF(-1) 以上の場合は
                        0xFFFFFFFF(-1) を格納する。
    dwWriteSize         圧縮解凍処理で処理した全体のサイズ。
                        dwFileSize が 0xFFFFFFFF(-1) の場合は
                        全体の処理率（パーミル）を格納する。
    dwAttributes        ファイルの属性。
    dwCRC               格納ファイルのチェックサム。
    uOSType             ファイルを格納した際に使われた OS。
                        現状では常に 0。
    wRatio              パーミル (千分率) で表された圧縮率。
                        ソリッド書庫の場合は常に 0。
    ftCreateTime        FILETIME 形式によるファイルの作成日時。
    ftAccessTime        FILETIME 形式によるファイルの参照日時。
    ftWriteTime         FILETIME 形式によるファイルの更新日時。
    szMode              7-zip32.dll では圧縮方式の文字列が格納。
    szSourceFileName    処理する書庫内の格納ファイル名。
    szDestFileName      実際に書(読)込みされるディスク上のファイルのフルパス。


--------------------------------------------------------------------------------
EXTRACTINGINFOEX64 の構造
--------------------------------------------------------------------------------
構造体定義
    typedef struct {
        DWORD           dwStructSize;
        EXTRACTINGINFO  exinfo;
        ULHA_INT64      llFileSize;
        ULHA_INT64      llCompressedSize;
        ULHA_INT64      llWriteSize;
        DWORD           dwAttributes;
        DWORD           dwCRC;
        UINT            uOSType;
        WORD            wRatio;
        FILETIME        ftCreateTime;
        FILETIME        ftAccessTime;
        FILETIME        ftWriteTime;
        char            szMode[8];
        char            szSourceFileName[FNAME_MAX32 + 1];
        char            dummy1[3];
        char            szDestFileName[FNAME_MAX32 + 1];
        char            dummy2[3];
    } EXTRACTINGINFOEX64;


メンバの説明

    dwStructSize        構造体のサイズ。
    exinfo              EXTRACTINGINFO 構造体が格納されます。
                        互換性のために残してあるだけです。
    llFileSize          全処理ファイルの合計サイズ。
    llCompressedSize    格納ファイルの圧縮サイズ。
    llWriteSize         圧縮解凍処理で処理した全体のサイズ。
    dwAttributes        ファイルの属性。
    dwCRC               格納ファイルのチェックサム。
    uOSType             ファイルを格納した際に使われた OS。
                        現状では常に 0。
    wRatio              パーミル (千分率) で表された圧縮率。
                        ソリッド書庫の場合は常に 0。
    ftCreateTime        FILETIME 形式によるファイルの作成日時。
    ftAccessTime        FILETIME 形式によるファイルの参照日時。
    ftWriteTime         FILETIME 形式によるファイルの更新日時。
    szMode              7-zip32.dll では圧縮方式の文字列が格納。
    szSourceFileName    処理する書庫内の格納ファイル名。
    szDestFileName      実際に書(読)込みされるディスク上のファイルのフルパス。


--------------------------------------------------------------------------------
処理の流れ
--------------------------------------------------------------------------------
　処理される格納ファイルごとに次の１・２を繰り返す。

１．ARCEXTRACT_OPEN(3) でメッセージを送出。
　　szSourceFileName に処理する書庫名が格納される。

２．ARCEXTRACT_BEGIN(0) でメッセージを送出。
　　szSourceFileName, szDestFileName, ファイル属性, 更新日時が有効になる。
　　最初に送信された際に dwFileSize, llFileSize ヘ処理が行われる
　　ファイルの合計サイズが格納される。
    （合計サイズがオーバーフローする場合は 0xFFFFFFFF(-1) を格納）
　　解凍時(e,x コマンド)は他の各メンバも有効になる。
　　削除時(d コマンド)は送出されず、３を処理が終わるまで繰り返す。

３．ARCEXTRACT_INPROCESS(1) でメッセージを送出。
    dwWriteSize, llWriteSize にこれまで処理した合計サイズが格納される。
    （dwFileSize が 0xFFFFFFFF(-1) の場合は dwWriteSize には全体の処理率を格納）
    処理中のファイルの処理が終わるまで送出される。
　　場合によっては送出されない事もある。

　　他に処理するファイルが残っている場合は２へ戻り
　  すべての処理が終了した時点で４へ。（処理状況表示を消すタイミング）

４．ARCEXTRACT_END(2) でメッセージを送出。
　　lParam(_lpEis) は 0(NULL) が格納される。


--------------------------------------------------------------------------------
    API の返すエラーコード
--------------------------------------------------------------------------------

ERROR_WARNING (0x8101)
    何か致命的でないエラーが発生しました。
ERROR_FATAL (0x8102)
    何か致命的なエラーが発生しました。
ERROR_FILE_CREATE (0x8106)
    ファイルが作成できませんでした。
ERROR_PASSWORD_FILE (0x800A)
    暗号化書庫、若しくは入力されたパスワードが間違っています。
ERROR_CANNOT_WRITE (0x8013)
    書き込みエラーが生じました。
ERROR_NOT_ARC_FILE (0x8019)
    指定したファイルは、アーカイブファイルではありません。
ERROR_COMMAND_NAME (0x801C)
    コマンド指定が間違っています。
ERROR_MORE_HEAP_MEMORY (0x801D)
    メモリが不足しています。
ERROR_ALREADY_RUNNING (0x801F)
    既に 7-ZIP32.DLL が動作中です。
ERROR_USER_CANCEL (0x8020)
    ユーザーによって処理が中断されました。
ERROR_HARC_ISNOT_OPENED (0x8021)
    SevenZipOpenArchive() で書庫とハンドルを関連付ける前に
    SevenZipFindFirst() 等の API が使用されました。
ERROR_NOT_SEARCH_MODE (0x8022)
    SevenZipFindFirst() を使用する前に SevenZipFindNext() が呼ばれたか
    これらを呼び出す前に SevenZipGetFileName() 等の API が呼ばれた。
ERROR_NOT_FIND_ARC_FILE (0x8029)
    アーカイブファイルが見つかりません。
ERROR_GET_INFORMATION (0x8036)
    情報が取得できませんでした。
ERROR_GET_TIME (0x803A)
    時間が取得できませんでした。
ERROR_TOO_BIG (0x804A)
    ファイルサイズが 32bit 以上で変数に格納出来ませんでした。
ERROR_INVALID_VALUE (0x804C)
    無効なデータが得られたか、用意されたバッファが不足しています。


--------------------------------------------------------------------------------
注意
--------------------------------------------------------------------------------

今後仕様変更される事があります。

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