home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
DOS/V Power Report 2001 July
/
VPR0107A.BIN
/
CAB32API.TXT
< prev
next >
Wrap
Text File
|
2000-08-01
|
33KB
|
1,016 lines
=======================================================================
CAB32.DLL Ver 0.92 API 説明ファイル
=======================================================================
このファイルは、CAB32.DLLでサポートされているAPIに関する説明ファイル
です。
アーカイバDLLのAPIに準拠してありますが、すべてのAPIをサポートしている
わけではありませんので、よくお読みになってご利用ください。
なお、各APIについて、以下のように分類されます。
◎...完全にサポート
○...一部仕様を満たしていない
△...APIエントリは存在するが機能しない(呼び出しても無意味)
X...APIエントリが存在しない
-----------------------------------------------------------------------
◎ int WINAPI Cab(const HWND hWnd,LPCSTR szCmdLine,LPSTR szOutput,
const DWORD dwSize);
-----------------------------------------------------------------------
順序数 1
機能
圧縮/解凍を行います。
引数
hWnd CAB32.DLL を呼び出すアプリのウィンドウ・ハンドル。
CAB32.DLL は実行時にこのウィンドウに対して EnableWin-
dow() を実行しウィンドウの動作を抑制します。ウィンドウ
が存在しないコンソールアプリの場合や,指定する必要のな
い場合は NULL を渡します。
szCmdLine CAB32.DLL に渡すコマンド文字列。
szOutput CAB32.DLL が結果を返すためのバッファ。グローバルメモリー
等の場合はロックされている必要があります。64Kバイト以上
のサイズでも問題ありません。
dwSize バッファのサイズ。結果が指定サイズを越える場合は、この
サイズに切り詰められます。
結果がこのサイズより小さい場合は、最後に NULL 文字が
付加されます。(最低1文字のみが保証される)
バッファのサイズいっぱいの場合等、NULL 文字がどこにもない
可能性がある点に留意のこと。
戻り値
正常終了の時 0。
エラーが発生した場合 0 以外の数(エラー値 >= 0x8000:後述)。
また,解凍先に既にファイルがあるなどの理由で解凍をスキップ
した場合などはスキップされたファイルの数を返します。
-----------------------------------------------------------------------
◎ BOOL WINAPI CabCheckArchive(LPCSTR szFileName,const int iMode);
-----------------------------------------------------------------------
順序数 12
機能
指定ファイルがサポートしているアーカイバファイルとして正しいかどうかを
返します。
引数
szFileName チェックすべきアーカイブファイルのファイル名。
iMode チェックモード。
CHECKARCHIVE_RAPID(0) 簡易モード。ヘッダのみチェックします。
CHECKARCHIVE_BASIC(1) 簡易モード。0 の場合と違ってこちらは完全な
ヘッダチェックをおこないます。
CHECKARCHIVE_FULLCRC 厳密モード。格納ファイルの CRC 等もチェック
(2) する。
戻り値
TRUE 正しいアーカイブファイルの時。
FALSE ファイルが不正の時。
-----------------------------------------------------------------------
△ BOOL WINAPI CabConfigDialog(const HWND hWnd,LPSTR szOptionBuffer,
const int iMode);
-----------------------------------------------------------------------
順序数 11
機能
圧縮/解凍のオプション指定ダイアログの表示。Cab() に渡すコマンドの
オプションを対話的に設定する必要がある時に呼び出してください。
引数
hWnd CAB32.DLL を呼び出すアプリのウィンドウ・ハンドル。
szOptionBuffer ダイアログで設定したコマンドラインを格納します。
また、呼び出し時にパラメータを設定すればダイアログの
初期値となります。
"" であれば、レジストリー に設定されたパラメータが初
期値となります。
必ず513バイト以上の大きさを用意してください。
iMode 圧縮/解凍のどちらに関する設定かの指定。
UNPACK_CONFIG_MODE(1) 解凍(復元)系のコマンド
PACK_CONFIG_MODE(2) 圧縮(作成)系のコマンド
戻り値
ERROR_ALREADY_RUNNING CAB32.DLL が既に実行中の時。
TRUE 設定が成功した時。
FALSE 設定が出来なかった(されなかった)時
または取消終了時。
その他
設定は、レジストリの Software\ArchiverDll 以下に CAB32 のセクションが
作られ書き込まれます。
アーカイバ DLL 間で共通に使われるオプションは Common セクション内に
書かれ、他のアーカイバ DLL での設定の影響を受けます。
-----------------------------------------------------------------------
◎ WORD WINAPI CabGetVersion(VOID);
-----------------------------------------------------------------------
順序数 2
機能
CAB32.DLL の現在のバージョンを返します。
戻り値
現在のバージョン 50 -> Version 0.50
100 -> Version 1.00
その他
仕様変更などがあるかもしれませんので、かならずバージョンのチェック
をおこなってください。
-----------------------------------------------------------------------
◎ BOOL WINAPI CabGetRunning(VOID);
-----------------------------------------------------------------------
順序数 10
機能
現在 CAB32.DLL が動作中か否かを得ます。
アプリケーション側は必ず圧縮/解凍等のファイルアクセスを伴うAPI
を実行する前には、これにより実行可能かをチェックする必要があります。
戻り値
TRUE 実行中です。
FALSE 実行中ではない(実行可能)。
-----------------------------------------------------------------------
△ BOOL WINAPI CabGetBackGroundMode(VOID);
-----------------------------------------------------------------------
順序数 5
機能
CAB32.DLL がバックグラウンドモードか否かを得ます。
戻り値
TRUE バックグラウンドモード。
FALSE 非バックグラウンドモード(CPUタイムを占有します)。
-----------------------------------------------------------------------
△ BOOL WINAPI CabSetBackGroundMode(const BOOL bBackGroundMode);
-----------------------------------------------------------------------
順序数 6
機能
CAB32.DLL のバックグラウンドモードを設定します。
バックグラウンドで実行しない方が圧縮/解凍の速度は早いですがその場
合タスクを専有します。
Win32 の環境の場合は非バックグラウンドでも専有しませんので、FALSE
設定で良いでしょう。
引数
bBackGroundMode 設定するバックグラウンドモード。
TRUE バックグラウンドモード
FALSE 非バックグラウンドモード
戻り値
TRUE 正常終了(設定できた)。
FALSE 動作中で変更できなかった場合や、引数が間違いの場合。
-----------------------------------------------------------------------
△ BOOL WINAPI CabGetCursorMode(VOID);
-----------------------------------------------------------------------
順序数 7
機能
CAB32.DLL の動作中にカーソルを表示するモードか否かを得ます。
戻り値
TRUE カーソル表示モード。
FALSE カーソル非表示モード。
-----------------------------------------------------------------------
△ BOOL WINAPI CabSetCursorMode(const BOOL bCursorMode);
-----------------------------------------------------------------------
順序数 8
機能
CAB32.DLL の動作中にカーソルを表示するモードか否かを設定します。
FALSE に設定した場合は、CAB32.DLL はいっさいのカーソル制御は
行いません。
引数
bCursorMode 設定するカーソルモード。
TRUE カーソル表示モード。
FALSE カーソル非表示モード。
戻り値
TRUE 正常終了。
FALSE 動作中で変更できなかった場合や、引数が間違いの場合。
-----------------------------------------------------------------------
△ WORD WINAPI CabGetCursorInterval(VOID);
-----------------------------------------------------------------------
順序数 3
機能
カーソルの回転速度を得ます。
戻り値
カーソルの回転速度(msec)
注: CAB32.DLL は回転カーソル表示をサポートしないので無意味ですが、
LHA.DLL との互換のために残してます。
-----------------------------------------------------------------------
△ BOOL WINAPI CabSetCursorInterval(const WORD wInterval);
-----------------------------------------------------------------------
順序数 4
機能
カーソルの回転速度を設定します。
ただし、CAB32.DLL の動作中には変更できません。
引数
wInterval カーソルの回転速度(msec)
デフォルトは 80 (msec) です。
戻り値
TRUE 正常終了の場合。
FALSE 動作中で変更できなかった場合。
注: CAB32.DLL は回転カーソル表示をサポートしないので無意味ですが、
LHA.DLL との互換のために残してます。必ず TRUE が返ります。
-----------------------------------------------------------------------
X int WINAPI CabGetArcFileInfo(LPSTR szFileName, MAININFO *lpMainInfo);
-----------------------------------------------------------------------
順序数 16
機能
格納されているファイルの情報を得ます。
引数
szFileName 情報を取得すべきアーカイブファイルのファイル名。
lpMainInfo 情報を格納する構造体の変数のアドレス。
戻り値
正常終了時に0、異常時にはエラーコード(0以外)が返る。
注: 現状では実装されていません!!
-----------------------------------------------------------------------
◎ int WINAPI CabGetFileCount(LPCSTR szArcFile);
-----------------------------------------------------------------------
順序数 17
機能
指定された書庫ファイルに格納されているファイル数を得ます。
引数
szArcFile 格納ファイル数を得たい書庫ファイル名。
戻り値
格納ファイル数を得る。エラーのときは -1 を返す。
-----------------------------------------------------------------------
◎ BOOL WINAPI CabQueryFunctionList(const int iFunction);
-----------------------------------------------------------------------
順序数 18
機能
指定された API が CAB32.DLL で使用可能かどうかを得ます。
アプリケーション側は目的の機能(API)が有効であるかどうか、事前に
チェックするようにしてください。
特にこのバージョンでは、エントリー名だけあって実装されていない機能が
たくさんあります。必ずチェックするようにしてください。
引数
iFunction API を示す一意な数値。
具体的な数値については CAB32.H を参照して下さい。
戻り値
TRUE 使用可能。
FALSE 使用出来ない、または iFunction は無効な値。
-----------------------------------------------------------------------
○ HARC WINAPI CabOpenArchive(const HWND hWnd,LPCSTR szFileName,
const DWORD dwMode);
-----------------------------------------------------------------------
順序数 21
機能
指定ファイルが CAB32.DLL に有効な書庫ファイルかどうか調べ、
有効であればオープンし、一意の数値(ハンドル)を返します。
以後の書庫ファイルへのアクセスはこのハンドルでおこないます。
アクセスを終了する時は CabCloseArchive 関数を呼ばなければ
なりません。
引数
hWnd CAB32.DLL を呼び出すアプリのウィンドウ・ハンドル。
szFileName 書庫ファイル名。
dwMode 処理モードを指定するフラグ。次の値を|(オア)で
組み合わせる。
※ 現状ではモード設定をサポートしていません。dwModeには0(ゼロ)
を指定してください。
M_INIT_FILE_USE レジストリーの設定を利用する。
M_REGARDLESS_INIT_FILE レジストリーの設定を無視する。
M_NOT_USE_TIME_STAMP タイムスタンプ検査を省略する。
M_EXTRACT_REPLACE_FILE 同名のファイルで且つファイルが
新しい場合に解凍する。
M_EXTRACT_NEW_FILE 解凍先にファイルが存在しない場合のみ
解凍する。
M_EXTRACT_UPDATE_FILE ファイルが存在しないか新しいときに
解凍する。
M_CHECK_ALL_PATH ファイル名の検索時に全パスを検索する。
M_CHECK_FILENAME_ONLY 検索時にファイル名のみを対象とする。
M_CHECK_PATH "-p1" と同様の検索方法を指定する。
M_CHECK_DISK_SIZE 解凍先のディスクの空き容量をチェックする。
M_REGARDLESS_DISK_SIZE 解凍先のディスクの空きをチェックしない。
M_USE_DRIVE_LETTER 格納ファイルのディレクトリ情報について
ドライブ名も利用する。
M_NOT_USE_DRIVE_LETTER 格納ファイルのドライブ名を無視する。
M_INQUIRE_DIRECTORY 新規ディレクトリ作成の確認を行う。
M_NOT_INQUIRE_DIRECTORY 新規ディレクトリ作成の確認を行わない。
M_INQUIRE_WRITE 上書き確認を行う。
M_NOT_INQUIRE_WRITE 上書き確認を行わない。
M_CHECK_READONLY 読み込み専用ファイルを読み飛ばす。
M_REGARDLESS_READONLY 解凍先に読み込み専用ファイルがあっても
解凍を行う。
M_REGARD_E_COMMAND 'E' コマンドと互換の解凍動作とする。
M_REGARD_X_COMMAND 'X' コマンドと互換の解凍動作とする。
M_ERROR_MESSAGE_ON エラー時にメッセージを表示する。
M_ERROR_MESSAGE_OFF エラー時にメッセージを表示しない。
M_BAR_WINDOW_ON 解凍状況ダイアログを表示する。
M_BAR_WINDOWS_OFF 解凍状況ダイアログを表示しない。
M_MAKE_INDEX_FILE 索引ファイルを作成する。
M_NOT_MAKE_INDEX_FILE 索引ファイルを作成しない。
戻り値
指定の書庫ファイルに対応したハンドル。エラー時は NULL を返します。
その他
同時に複数のハンドルを利用する事ができるかどうかは、バージョンに依存。
-----------------------------------------------------------------------
◎ int WINAPI CabCloseArchive(HARC hArc);
-----------------------------------------------------------------------
順序数 22
機能
CabOpenArchive() で割り付けたハンドルを解放する。
引数
hArc CabOpenArchive() で返されたハンドル。
戻り値
正常終了時に0、異常時にはエラーコード(0以外)が返る。
-----------------------------------------------------------------------
◎ int WINAPI CabFindFirst(HARC hArc,
LPCSTR szWildName,LPINDIVIDUALINFO lpSubInfo);
-----------------------------------------------------------------------
順序数 23
機能
最初の格納ファイルの情報を得る。
引数
hArc CabOpenArchive() で返されたハンドル。
szWildName 検索するファイル名の指定。ワイルドカード指定が
可能とする。単一のファイル名またはワイルドカードのみ
指定できます。
lpSubInfo 結果を返すための INDIVIDUALINFO 型の構造体へのポイ
ンタ。結果を必要としない場合は NULL を指定する事。
戻り値
0 正常終了。lpSubInfo で指定された構造体に格納
ファイルの情報がセットされている。
-1 検索終了。
-----------------------------------------------------------------------
◎ int WINAPI CabFindNext(HARC hArc,LPINDIVIDUALINFO lpSubInfo);
-----------------------------------------------------------------------
順序数 24
機能
直前の CabFindFirst() または CabFindNext() の次の格納ファイルの
情報を得る。
引数
hArc CabOpenArchive() で返されたハンドル。
lpSubInfo 結果を返すための INDIVIDUALINFO 型の構造体へのポイ
ンタ。結果を必要としない場合は NULL を指定する事。
戻り値
0 正常終了。lpSubInfo で指定された構造体に格納
ファイルの情報がセットされている。
-1 検索終了。
-----------------------------------------------------------------------
△ int WINAPI CabExtract(HARC hArc,LPCSTR szFileName,
LPCSTR szDirName, DWORD dwMode);
-----------------------------------------------------------------------
順序数 25
機能
指定されたファイルを解凍する。
引数
hArc CabOpenArchive() で返されたハンドル。
szFileName 解凍するファイル名。
dwMode で指定するモードにより意味が変わる。
szDirName 解凍先のディレクトリ。
最後を \ で終わる必要はない(あっても良い)。
dwMode CabOpenArchive() で指定可能なものの他に解凍モー
ドとして、次の値も指定出来る。
EXTRACT_FOUND_FILE 直前の CabFindFirst() 等で
マッチしたファイルを解凍。
EXTRACT_NAMED_FILE szFileName で指定されたファイル
を解凍。
戻り値
正常終了時に0、異常時にはエラーコード(0以外)が返る。
注: 現状はエントリーが存在するだけで、必ず失敗を返します!!
-----------------------------------------------------------------------
◎ int WINAPI CabGetArcFileName(HARC hArc,LPCSTR lpBuffer,int nSize);
-----------------------------------------------------------------------
順序数 31
機能
書庫ファイル名を得る。
引数
hArc CabOpenArchive() で返されたハンドル。
lpBuffer ファイル名を格納するバッファ。
nSize バッファのサイズ。
戻り値
正常終了時に0、異常時にはエラーコード(0以外)が返る。
-----------------------------------------------------------------------
◎ DWORD WINAPI CabGetArcFileSize(HARC hArc);
-----------------------------------------------------------------------
順序数 32
機能
書庫ファイルのサイズを得る。
引数
hArc CabOpenArchive() で返されたハンドル。
戻り値
書庫ファイルのサイズ。エラー時には -1 を返す。
-----------------------------------------------------------------------
◎ DWORD WINAPI CabGetArcOriginalSize(HARC hArc);
-----------------------------------------------------------------------
順序数 33
機能
現時点までの検索(CabFindFirst() および CabFindNext() )に
マッチしたファイルの(解凍後の)サイズの合計を得る。
CabFindNext() の検索が終了した後では、書庫ファイル中の検索で
一致した全ファイルの合計値となる。
引数
hArc CabOpenArchive() で返されたハンドル。
戻り値
合計サイズ。エラー時には -1 を返す。
-----------------------------------------------------------------------
△ DWORD WINAPI CabGetArcCompressedSize(HARC hArc);
-----------------------------------------------------------------------
順序数 34
機能
検索にマッチしたファイルの圧縮サイズの合計を得る。
その他詳細は CabGetArcOriginalSize() に準ずる。
引数
hArc CabOpenArchive() で返されたハンドル。
戻り値
圧縮サイズの合計。エラー時には -1 を返す。
注: 現状はエントリーが存在するだけで、必ず失敗を返します!!
-----------------------------------------------------------------------
△ WORD WINAPI CabGetArcRatio(HARC hArc);
-----------------------------------------------------------------------
順序数 35
機能
検索にマッチしたファイルの全体の圧縮率を得る。
その他詳細は CabGetArcOriginalSize() に準ずる。
引数
hArc CabOpenArchive() で返されたハンドル。
戻り値
全体の圧縮率(パーミル)。エラー時には -1。
注: 現状はエントリーが存在するだけで、必ず失敗を返します!!
-----------------------------------------------------------------------
◎ WORD WINAPI CabGetArcDate(HARC hArc);
-----------------------------------------------------------------------
順序数 36
機能
書庫ファイルの日付を得る。
引数
hArc CabOpenArchive() で返されたハンドル。
戻り値
書庫ファイルの日付。エラー時には -1。
形式は MSDOS のタイムスタンプに準ずる。
-----------------------------------------------------------------------
◎ WORD WINAPI CabGetArcTime(HARC hArc);
-----------------------------------------------------------------------
順序数 37
機能
書庫ファイルの時刻を得る。
引数
hArc CabOpenArchive() で返されたハンドル。
戻り値
書庫ファイルの時刻。エラー時には -1。
形式は MSDOS のタイムスタンプに準ずる。
-----------------------------------------------------------------------
△ UINT WINAPI CabGetArcOSType(HARC hArc);
-----------------------------------------------------------------------
順序数 38
機能
書庫ファイル作成に使用されたOSの種類を得る。
引数
hArc CabOpenArchive() で返されたハンドル。
戻り値
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
22: QDOS 23: VFAT95 24: MVS 25: BEBOX
-1: エラー。
注: 現状はエントリーが存在するだけで、必ず失敗を返します!!
-----------------------------------------------------------------------
△ int WINAPI CabIsSFXFile(HARC hArc);
-----------------------------------------------------------------------
順序数 39
機能
書庫ファイルが自己解凍ファイルかどうかを調べる。
引数
hArc CabOpenArchive() で返されたハンドル。
戻り値
0 通常の書庫ファイル。
1 自己解凍ファイル。
-1 エラー。
注: 現状はエントリーが存在するだけで、必ず失敗を返します!!
-----------------------------------------------------------------------
◎ int WINAPI CabGetFileName(HARC hArc,LPCSTR lpBuffer,int nSize);
-----------------------------------------------------------------------
順序数 40
機能
格納ファイルのファイル名を得る。
引数
hArc CabOpenArchive() で返されたハンドル。
lpBuffer ファイル名を格納するバッファ。
nSize バッファのサイズ。
戻り値
正常終了時には0が返され,lpBuffer にファイル名が格納される。
その他
「格納ファイル」とは、直前の検索(CabFindFirst() または
CabFindNext() )にマッチしたファイルを示す。
以下の各APIでも同様。
-----------------------------------------------------------------------
◎ DWORD WINAPI CabGetOriginalSize(HARC hArc);
-----------------------------------------------------------------------
順序数 41
機能
格納ファイルの(解凍後の)サイズを得る。
引数
hArc CabOpenArchive() で返されたハンドル。
戻り値
格納ファイルのサイズ。エラー時は -1。
-----------------------------------------------------------------------
△ DWORD WINAPI CabGetCompressedSize(HARC harc);
-----------------------------------------------------------------------
順序数 42
機能
格納ファイルの圧縮サイズを得る。
引数
hArc CabOpenArchive() で返されたハンドル。
戻り値
格納ファイルの圧縮サイズ。エラー時は -1。
注: 現状はエントリーが存在するだけで、必ず失敗を返します!!
-----------------------------------------------------------------------
△ WORD WINAPI CabGetRatio(HARC hArc);
-----------------------------------------------------------------------
順序数 43
機能
格納ファイルの圧縮率を得る。
引数
hArc CabOpenArchive() で返されたハンドル。
戻り値
格納ファイルの圧縮率(パーミル)。エラー時は -1。
注: 現状はエントリーが存在するだけで、必ず失敗を返します!!
-----------------------------------------------------------------------
◎ WORD WINAPI CabGetDate(HARC hArc);
-----------------------------------------------------------------------
順序数 44
機能
格納ファイルの日付を得る。
引数
hArc CabOpenArchive() で返されたハンドル。
戻り値
格納ファイルの日付。エラー時は -1。
形式は MSDOS のタイムスタンプに準ずる。
-----------------------------------------------------------------------
◎ WORD WINAPI CabGetTime(HARC hArc);
-----------------------------------------------------------------------
順序数 45
機能
格納ファイルの時刻を得る。
引数
hArc CabOpenArchive() で返されたハンドル。
戻り値
格納ファイルの時刻。エラー時は -1。
形式は MSDOS のタイムスタンプに準ずる。
-----------------------------------------------------------------------
△ DWORD WINAPI CabGetCRC(HARC hArc);
-----------------------------------------------------------------------
順序数 46
機能
格納ファイルのチェックコード(CRCやチェックサム等)を得る。
引数
hArc CabOpenArchive() で返されたハンドル。
戻り値
格納ファイルのチェックコード。エラー時は -1。
注: 現状はエントリーが存在するだけで、必ず失敗を返します!!
-----------------------------------------------------------------------
◎ int WINAPI CabGetAttribute(HARC hArc);
-----------------------------------------------------------------------
順序数 47
機能
格納ファイルの属性を得る。
引数
hArc CabOpenArchive() で返されたハンドル。
戻り値
格納ファイルの属性。以下の各ビットをオア(|)接続したもの。
エラー時は -1。
0x01 FA_RDONLY 読み込み専用ファイル。
0x02 FA_HIDDEN 不可視属性ファイル。
0x04 FA_SYSTEM システムファイル。
0x08 FA_LABEL ボリュームラベル。
0x10 FA_DIREC ディレクトリ。
0x20 FA_ARCH 保存ビット。
-----------------------------------------------------------------------
△ UINT WINAPI CabGetOSType(HARC hArc);
-----------------------------------------------------------------------
順序数 48
機能
格納ファイルが作成されたOSを得る。
引数
hArc CabOpenArchive() で返されたハンドル。
戻り値
OSを示す数値。
詳細は CabGetArcOSType() を参照。
注: 現状はエントリーが存在するだけで、必ず失敗を返します!!
-----------------------------------------------------------------------
△ int WINAPI CabExtractMem(const HWND hWnd,LPCSTR szCmdLine,
LPBYTE szBuffer,const DWORD dwSize,time_t *lpTime,
LPWORD lpwAttr,LPDWORD lpdwWriteSize);
-----------------------------------------------------------------------
順序数
機能
メモリバッファへ解凍します。
引数
hWnd CAB32.DLL を呼び出すアプリのウィンドウのハンドル。
CAB32.DLL は実行時にこのウィンドウに対して
EnableWindow() を実行しウィンドウの動作を抑制します。
ウィンドウが存在しないコンソールアプリの場合や,指定
する必要のない場合は NULL を渡します。
szCmdLine CAB32.DLL に渡すコマンドの文字列。Cab() と同じもの
が指定できますが,コマンドは無視されます。
lpBuffer 展開イメージを格納するバッファ。
dwSize バッファのサイズ。CAB32.DLL が返す結果のサイズより指
定されたサイズが小さい場合は指定サイズまで出力されます。
lpTime 解凍されたファイルの UTC でのタイムスタンプを得ます。
必要ない場合は NULL を指定します。
lpwAttr 解凍されたファイルの属性を得ます。 必要ない場合は NULL
を指定します。
lpdwWriteSize 解凍の結果書き込まれたサイズを得ます。必要ない場合は
NULL を指定します。
戻り値
正常終了の時 0。
エラーが発生した場合 0 以外の数。
その他
API の性格上,書庫やファイル名にワイルドカードを使うのは無意味と思
われます。
注: 現状はエントリーが存在するだけで、必ず失敗を返します!!
-----------------------------------------------------------------------
○ BOOL WINAPI CabSetOwnerWindow(HWND hWnd);
-----------------------------------------------------------------------
順序数 90
機能
CAB32.DLL のメッセージの送信先ウィンドウを設定します。
CAB32.DLL はここで指定されたウィンドウに解凍状況等を知らせる
メッセージを送信します。圧縮状況は通知されません。
メッセージの詳細については、下記「ウィンドウズ・メッセージ」を参照。
引数
hWnd オーナーウィンドウに指定するウィンドウのハンドル
戻り値
正常終了の場合 TRUE を返します。
動作中で変更できなかった場合や, 既にこの API で別のウィンドウが
設定されている場合には FALSE を返します。
-----------------------------------------------------------------------
◎ BOOL WINAPI CabClearOwnerWindow(VOID);
-----------------------------------------------------------------------
順序数 91
機能
CabSetOwnerWindow() で設定したウィンドウの設定を解除します。
戻り値
正常終了の場合 TRUE を返します。
動作中で変更できなかった場合やには FALSE を返します。
-----------------------------------------------------------------------
◎ BOOL WINAPI CabSetOwnerWindowEx(HWND hWnd,LPARCHIVERPROC lpArcProc)
-----------------------------------------------------------------------
順序数 92
機能
CAB32.DLL の解凍状況を受け取るためのコールバック関数の指定を行
います。lpArcProc に NULL を指定すると hWnd で指定したウィンドウ
に メッセージを送出します(CabSetOwnerWindow(hWnd)と同じ)。
戻り値
正常終了の場合 TRUE を返します。
動作中で変更できなかった場合や, 既にこの API で別のウィンドウが
設定されている場合には FALSE を返します。
-----------------------------------------------------------------------
◎ BOOL WINAPI CabKillOwnerWindowEx(HWND hWnd)
-----------------------------------------------------------------------
順序数 93
機能
CabSetOwnerWindowEx() で設定したウィンドウの設定を解除します。
戻り値
正常終了の場合 TRUE を返します。
動作中で変更できなかった場合や指定した hWnd が現在の設定と一致
しない場合には FALSE を返します。
-----------------------------------------------------------------------
ウィンドウズ・メッセージ
-----------------------------------------------------------------------
●wm_arcextract
wm_arcextract
nMode = (int)wParam /* 通知モードを表す */
lpEis = (LPEXTRACTINGINFO)lParam /* 構造体を指すポインタ */
wm_arcextract メッセージは,CabSetOwnerWindow() で設定したウィンドウ
に CAB32.DLL から送られます。
このメッセージを受け取ることにより CAB32.DLL がこれから処理する格納ファ
イル名やファイルサイズ等を得ることができます。
nMode wParam の値です。CAB32.DLL の処理の状態を表します。
0 : 該当ファイルの処理を開始することを表します。
1 : 該当ファイルの展開中であることを表します。
2 : 処理を終え,lpEis のメモリを開放しようとしていることを表します。
lpEis lParam の値です。 ファイル名等を格納する
EXTRACTINGINFO 構造体を指すポインタです。
戻り値
このメッセージを処理するアプリケーションは、FALSEを返さなければなりません。
FALSE 以外を返すことにより,CAB32.DLL の解凍処理を中止させることができます。
-----------------------------------------------------------------------
コールバック関数
-----------------------------------------------------------------------
CAB32.DLL の解凍状況に応じて、CabSetOwnerWindowEx() で設定したコールバック
関数が呼ばれます。
このコールバック関数に渡される引数により、CAB32.DLL がこれから処理する格納
ファイル名やファイルサイズ等を得ることができます。
typedef BOOL CALLBACK ARCHIVERPROC(HWND hWnd,UINT uMsg,
UINT nMode,LPEXTRACTINGINFOEX lpEis);
hWnd SetOwnerWindowEx で指定したウィンドウハンドルが渡され
ます。
uMsg 現在のところは wm_arcextract となります。
nMode wm_arcextract の wParam,つまり nMode と同じ意味です。
lpEis EXTRACTINGINFOEX 構造体へのポインタです。格納ファイルに
関する情報が得られます。
ARCHIVERPROC は CAB32.DLL に処理を継続させるときは TRUE、中止させるときは
FALSE を返さなければなりません。
※ 解凍処理の場合のみコールバックし、圧縮処理ではコールバックはしません。
-----------------------------------------------------------------------
EXTRACTINGINFO の構造
-----------------------------------------------------------------------
構造体定義
typedef struct {
DWORD dwFileSize;
DWORD dwWriteSize;
char szSourceFileName[FNAME32_MAX + 1];
char dummy1[3];
char szDestFileName[FNAME32_MAX + 1];
char dummy[3];
} EXTRACTINGINFO
メンバの説明
dwFileSize 格納ファイルのサイズ。
dwWriteSize 解凍処理で書き込んだサイズ。
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 格納ファイルの圧縮サイズ。
dwCRC 格納ファイルのチェックサム。
uOSType ファイルを格納した際に使われたOS。
wRatio 格納ファイルの圧縮率。
wDate 格納ファイルの更新日付(DOS 形式)。
wTime 格納ファイルの更新時間(DOS 形式)。
szAttribute 格納ファイルの属性。
szMode CAB32.DLL では圧縮メソッドの文字列が格
納されています。
------------------------------------------------------------------------
処理の流れ
------------------------------------------------------------------------
解凍される格納ファイルごとに次の1・2を繰り返す。
1.nMode 0 でメッセージを送出。ファイル名等を得られる。
2.nMode 1 でメッセージを送出。書き込みサイズが得られる。そのファイルに
ついての解凍処理が終了するまで,このメッセージを送出し続ける。
すべての処理が終了した時点で(解凍状況表示を消すタイミング),
3.nMode 2 でメッセージを送出。
-----------------------------------------------------------------------
API の返すエラーコード
-----------------------------------------------------------------------
■警告 :該当ファイルについての処理をスキップするだけで実行を中止する事
はない。
ERROR_DISK_SPACE
解凍する為のディスクの空きが足りません。
ERROR_READ_ONLY
解凍先のファイルはリードオンリーです。
ERROR_USER_SKIP
ユーザーによって解凍をスキップされました。
ERROR_UNKOWN_TYPE
格納ファイルの種類が MS-DOS で扱える形式(BINARY 及び TEXT)以外で
す。
ERROR_METHOD
CAB32.DLL で扱えない格納モードで格納されています。
ERROR_PASSWORD_FILE
格納ファイルにパスワードがかかっています。
ERROR_VERSION
格納ファイルが CAB32.DLL が対応していないバージョンの形式です。
ERROR_FILE_CRC
格納ファイルのチェックサムが合っていません。
ERROR_FILE_OPEN
解凍時にファイルを開けませんでした。
ERROR_MORE_FRESH
より新しいファイルが解凍先に存在しています。
ERROR_NOT_EXIST
ファイルは解凍先に存在していません。
ERROR_ALREADY_EXIT
ファイルが解凍先に既に存在しています。
ERROR_TOO_MANY_FILES
格納ファイル数が限界を越えている。処理は正常に行われているが,限界
を越えた部分については情報は得られていない。
■エラー :致命的なエラーでその時点で実行を中止する。
ERROR_DIRECTORY
ディレクトリが作成できません。
ERROR_CANNOT_WRITE
解凍中に書き込みエラーが生じました。
ERROR_HUFFMAN_CODE
アーカイブファイルのハフマンコードが壊れています。
ERROR_COMMENT_HEADER
アーカイブファイルのコメントヘッダが壊れています。
ERROR_HEADER_CRC
アーカイブファイルのヘッダのチェックサムが合っていません。
ERROR_HEADER_BROKEN
アーカイバファイルのヘッダが壊れています。
ERROR_ARCHIVE_FILE_OPEN
アーカイブファイルを開く事が出来ません。
ERROR_NOT_ARCHIVE_FILE
指定したファイルは、アーカイブファイルではありません。
ERROR_CANNOT_READ
アーカイブファイルの読み込み時に読み込みエラーが出ました。
ERROR_FILE_STYLE
指定されたファイルは、アーカイブファイルではありません。
ERROR_COMMAND_NAME
コマンド指定が間違っています。
ERROR_MORE_HEAP_MEMORY
作業用のためのヒープメモリが不足しています。
ERROR_ENOUGH_MEMORY
グローバルメモリが不足しています。
ERROR_ALREADY_RUNNING
既に別のプロセスから CAB32.DLL が呼ばれています。
-----------------------------------------------------------------------
レジストリーの設定
-----------------------------------------------------------------------
CAB32.DLL は明示的に解凍先ディレクトリやオプションが指定されなかっ
た場合に、もし レジストリーに該当の省略値が設定されていればそれを
使用します。コマンドラインで明示的に指定された場合は,コマンド指定
が優先的に使用されます。
レジストリーにも指定されていない場合は、CAB32.DLL 本来のデフォル
トの動作となります(カレントディレクトリーに解凍する)。
-----------------------------------------------------------------------
注意
-----------------------------------------------------------------------
LHA.DLL Ver 1.10 互換の API 及び CabCheckArchive() 以外の API については
今後仕様変更される事があります。
=======================================================================