================================================================================
                  7-zip32.DLL Ver 4.57.00.01　API 説明ファイル
================================================================================
                                                            秋田 稔 (2008/01/31)

高度の圧縮率で知られる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-zip.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)             ヘッダのチェックだけ行います。ヘッダが暗号化されて
                            いてもパスワードを求めません。
                            場合によってはサポートされていない場合も正しい書庫
                            として返す場合があります。
      CHECKARCHIVE_BASIC    通常モード。
            (1)             簡易モードとは異なり、正しい書庫か判断します。
                            ヘッダが暗号化されている場合はパスワードを求めます。
      CHECKARCHIVE_FULLCRC  厳密モード。 
            (2)             格納ファイルの CRC もチェックします。
                            書庫のテストを行うので処理が完了するまでに長い時間を
                            要する場合があります。

戻り値
    TRUE        正しい書庫ファイルの時。
    FALSE       ファイルが不正の時。


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

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

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

    0                    7-zip32.dll で利用できない形式
    -1                   エラー


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

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

戻り値
    格納ファイル数を得る。エラーのときは -1 を返す。


--------------------------------------------------------------------------------
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     現時点では無視。0 を指定。

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

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


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

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

戻り値
    正常終了時に 0 、異常時には -1 が返ります。


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

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

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


--------------------------------------------------------------------------------
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, LPCSTR _lpBuffer, int _nSize)
--------------------------------------------------------------------------------
順序数  31
機能
    書庫ファイル名を得ます。

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

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


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

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

戻り値
    書庫ファイルのサイズ。エラー時には -1 を返します。


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

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

戻り値
    合計サイズ。エラー時には -1 を返します。


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

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

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

注意
    書庫がソリッド書庫か判別するにはエラーと識別できない為 
    SevenZipGetArcCompressedSizeEx を使用するべきです。


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

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

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


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

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

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

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

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

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


--------------------------------------------------------------------------------
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 にファイル名が格納されます。

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


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

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

戻り値
    格納ファイルのサイズ。エラー時は -1。


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

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

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


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

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

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


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

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

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


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

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

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


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

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

戻り値
    格納ファイルのチェックコード。エラー時は -1。


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

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

戻り値
    格納ファイルの属性。以下の各ビットをオア（|）接続したもの。
    エラー時は -1。

    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 と同じ物が
    格納されますが、それ以外の場合はより詳しい情報が格納されます。
    但し、バッファに入りきらない分は切り捨てられます。

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


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

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

戻り値
    格納ファイルの UNIX 形式の UTC による更新日時。エラー時は -1。


--------------------------------------------------------------------------------
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 のヘルプ等を参照してください。


--------------------------------------------------------------------------------
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 のヘルプ等を参照してください。


--------------------------------------------------------------------------------
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 のヘルプ等を参照してください。


--------------------------------------------------------------------------------
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 のヘルプ等を参照してください。


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

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

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


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

戻り値
    正常終了の場合 TRUE を返します。
    動作中で変更できなかった場合には FALSE を返します。


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

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

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


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

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


--------------------------------------------------------------------------------
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 を返します。


--------------------------------------------------------------------------------
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 を返します。

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


--------------------------------------------------------------------------------
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 を返します。

注意
    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 を返します。

注意
    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 を返します。


--------------------------------------------------------------------------------
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 を返します。

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

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

戻り値
    正常終了時は 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];
    } EXTRACTINGINFOEX32;


メンバの説明

    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
    何か致命的でないエラーが発生しました。
ERROR_FATAL
    何か致命的なエラーが発生しました。
ERROR_FILE_CRC
    格納ファイルのチェックサムが合っていません。
ERROR_READ_ONLY
    ファイルは読取専用です。
ERROR_CANNOT_WRITE
    書き込みエラーが生じました。
ERROR_FILE_OPEN
    ファイルを開けませんでした。
ERROR_COMMAND_NAME
    コマンド指定が間違っています。
ERROR_ENOUGH_MEMORY
    グローバルメモリが不足しています。
ERROR_NOT_ARC_FILE
    指定したファイルは、アーカイブファイルではありません。
ERROR_VERSION
    格納ファイルが 7-ZIP32.DLL が対応していないバージョンの形式です。
ERROR_METHOD
    7-ZIP32.DLL で扱えない格納モードで格納されています。
ERROR_DURING_DECOMPRESSION
    解凍時にエラーが発生しました。
ERROR_DIR_FILE_WIDTH_64BIT_SIZE
    ディレクトリのファイルは 64bit のサイズです。
ERROR_CONVERT_TIME
    タイムスタンプの変換ができません。
ERROR_FILE_CHANGED_DURING_OPERATION
    ファイルが操作中に変更されました。
ERROR_USER_CANCEL
    ユーザーによって処理が中断されました。
ERROR_ALREADY_RUNNING
    既に 7-ZIP32.DLL が動作中です。
ERROR_HARC_ISNOT_OPENED
    SevenZipOpenArchive() で書庫とハンドルを関連付ける前に
    SevenZipFindFirst() 等の API が使用されました。
ERROR_NOT_SEARCH_MODE
    SevenZipFindFirst() を使用する前に SevenZipFindNext() が呼ばれたか
    これらを呼び出す前に SevenZipGetFileName() 等の API が呼ばれた。
ERROR_PASSWORD_FILE
    入力されたパスワードが間違っています。


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

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

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