home *** CD-ROM | disk | FTP | other *** search
/ DOS/V Power Report 2001 July / VPR0107A.BIN / CAB32API.TXT < prev    next >
Text File  |  2000-08-01  |  33KB  |  1,016 lines

  1. =======================================================================
  2.                CAB32.DLL Ver 0.92 API 説明ファイル
  3. =======================================================================
  4.  
  5. このファイルは、CAB32.DLLでサポートされているAPIに関する説明ファイル
  6. です。
  7. アーカイバDLLのAPIに準拠してありますが、すべてのAPIをサポートしている
  8. わけではありませんので、よくお読みになってご利用ください。
  9. なお、各APIについて、以下のように分類されます。
  10.  
  11.     ◎...完全にサポート
  12.     ○...一部仕様を満たしていない
  13.     △...APIエントリは存在するが機能しない(呼び出しても無意味)
  14.     X...APIエントリが存在しない
  15.  
  16.  
  17. -----------------------------------------------------------------------
  18. ◎ int WINAPI Cab(const HWND hWnd,LPCSTR szCmdLine,LPSTR szOutput,
  19.          const DWORD dwSize);
  20. -----------------------------------------------------------------------
  21. 順序数    1
  22. 機能
  23.     圧縮/解凍を行います。
  24.  
  25. 引数
  26.     hWnd        CAB32.DLL を呼び出すアプリのウィンドウ・ハンドル。
  27.             CAB32.DLL は実行時にこのウィンドウに対して EnableWin-
  28.             dow() を実行しウィンドウの動作を抑制します。ウィンドウ
  29.             が存在しないコンソールアプリの場合や,指定する必要のな
  30.             い場合は NULL を渡します。
  31.     szCmdLine   CAB32.DLL に渡すコマンド文字列。
  32.     szOutput    CAB32.DLL が結果を返すためのバッファ。グローバルメモリー
  33.             等の場合はロックされている必要があります。64Kバイト以上
  34.             のサイズでも問題ありません。
  35.     dwSize      バッファのサイズ。結果が指定サイズを越える場合は、この
  36.             サイズに切り詰められます。
  37.             結果がこのサイズより小さい場合は、最後に NULL 文字が
  38.             付加されます。(最低1文字のみが保証される)
  39.             バッファのサイズいっぱいの場合等、NULL 文字がどこにもない
  40.             可能性がある点に留意のこと。
  41.  
  42. 戻り値
  43.   正常終了の時        0。
  44.   エラーが発生した場合    0 以外の数(エラー値 >= 0x8000:後述)。
  45.             また,解凍先に既にファイルがあるなどの理由で解凍をスキップ
  46.             した場合などはスキップされたファイルの数を返します。
  47.  
  48. -----------------------------------------------------------------------
  49. ◎ BOOL WINAPI CabCheckArchive(LPCSTR szFileName,const int iMode);
  50. -----------------------------------------------------------------------
  51. 順序数    12
  52. 機能
  53.     指定ファイルがサポートしているアーカイバファイルとして正しいかどうかを
  54.     返します。
  55.  
  56. 引数
  57.     szFileName    チェックすべきアーカイブファイルのファイル名。
  58.     iMode        チェックモード。
  59.       CHECKARCHIVE_RAPID(0)    簡易モード。ヘッダのみチェックします。
  60.       CHECKARCHIVE_BASIC(1)    簡易モード。0 の場合と違ってこちらは完全な
  61.                 ヘッダチェックをおこないます。
  62.       CHECKARCHIVE_FULLCRC    厳密モード。格納ファイルの CRC 等もチェック
  63.         (2)        する。
  64.  
  65. 戻り値
  66.     TRUE        正しいアーカイブファイルの時。
  67.     FALSE        ファイルが不正の時。
  68.  
  69. -----------------------------------------------------------------------
  70. △ BOOL WINAPI CabConfigDialog(const HWND hWnd,LPSTR szOptionBuffer,
  71.             const int iMode);
  72. -----------------------------------------------------------------------
  73. 順序数    11
  74. 機能
  75.     圧縮/解凍のオプション指定ダイアログの表示。Cab() に渡すコマンドの
  76.     オプションを対話的に設定する必要がある時に呼び出してください。
  77.  
  78. 引数
  79.     hWnd        CAB32.DLL を呼び出すアプリのウィンドウ・ハンドル。
  80.     szOptionBuffer    ダイアログで設定したコマンドラインを格納します。
  81.             また、呼び出し時にパラメータを設定すればダイアログの
  82.             初期値となります。
  83.             "" であれば、レジストリー に設定されたパラメータが初
  84.             期値となります。
  85.             必ず513バイト以上の大きさを用意してください。
  86.     iMode        圧縮/解凍のどちらに関する設定かの指定。
  87.       UNPACK_CONFIG_MODE(1)    解凍(復元)系のコマンド
  88.       PACK_CONFIG_MODE(2)    圧縮(作成)系のコマンド
  89.  
  90. 戻り値
  91.     ERROR_ALREADY_RUNNING    CAB32.DLL が既に実行中の時。
  92.     TRUE            設定が成功した時。
  93.     FALSE            設定が出来なかった(されなかった)時
  94.                 または取消終了時。
  95.  
  96. その他
  97.     設定は、レジストリの Software\ArchiverDll 以下に CAB32 のセクションが
  98.     作られ書き込まれます。
  99.     アーカイバ DLL 間で共通に使われるオプションは Common セクション内に
  100.     書かれ、他のアーカイバ DLL での設定の影響を受けます。
  101.  
  102. -----------------------------------------------------------------------
  103. ◎ WORD WINAPI CabGetVersion(VOID);
  104. -----------------------------------------------------------------------
  105. 順序数    2
  106. 機能
  107.     CAB32.DLL の現在のバージョンを返します。
  108.  
  109. 戻り値
  110.     現在のバージョン     50 -> Version 0.50
  111.                 100 -> Version 1.00
  112.  
  113. その他
  114.     仕様変更などがあるかもしれませんので、かならずバージョンのチェック
  115.     をおこなってください。
  116.  
  117. -----------------------------------------------------------------------
  118. ◎ BOOL WINAPI CabGetRunning(VOID);
  119. -----------------------------------------------------------------------
  120. 順序数    10
  121. 機能
  122.     現在 CAB32.DLL が動作中か否かを得ます。
  123.     アプリケーション側は必ず圧縮/解凍等のファイルアクセスを伴うAPI
  124.     を実行する前には、これにより実行可能かをチェックする必要があります。
  125.  
  126. 戻り値
  127.     TRUE        実行中です。
  128.     FALSE        実行中ではない(実行可能)。
  129.  
  130. -----------------------------------------------------------------------
  131. △ BOOL WINAPI CabGetBackGroundMode(VOID);
  132. -----------------------------------------------------------------------
  133. 順序数    5
  134. 機能
  135.     CAB32.DLL がバックグラウンドモードか否かを得ます。
  136.  
  137. 戻り値
  138.     TRUE        バックグラウンドモード。
  139.     FALSE        非バックグラウンドモード(CPUタイムを占有します)。
  140.  
  141.  
  142. -----------------------------------------------------------------------
  143. △ BOOL WINAPI CabSetBackGroundMode(const BOOL bBackGroundMode);
  144. -----------------------------------------------------------------------
  145. 順序数    6
  146. 機能
  147.     CAB32.DLL のバックグラウンドモードを設定します。
  148.     バックグラウンドで実行しない方が圧縮/解凍の速度は早いですがその場
  149.     合タスクを専有します。
  150.     Win32 の環境の場合は非バックグラウンドでも専有しませんので、FALSE
  151.     設定で良いでしょう。
  152.  
  153. 引数
  154.     bBackGroundMode    設定するバックグラウンドモード。
  155.       TRUE        バックグラウンドモード
  156.       FALSE        非バックグラウンドモード
  157.  
  158. 戻り値
  159.     TRUE        正常終了(設定できた)。
  160.     FALSE        動作中で変更できなかった場合や、引数が間違いの場合。
  161.  
  162.  
  163. -----------------------------------------------------------------------
  164. △ BOOL WINAPI CabGetCursorMode(VOID);
  165. -----------------------------------------------------------------------
  166. 順序数    7
  167. 機能
  168.     CAB32.DLL の動作中にカーソルを表示するモードか否かを得ます。
  169.     
  170. 戻り値
  171.     TRUE        カーソル表示モード。
  172.     FALSE        カーソル非表示モード。
  173.  
  174.  
  175. -----------------------------------------------------------------------
  176. △ BOOL WINAPI CabSetCursorMode(const BOOL bCursorMode);
  177. -----------------------------------------------------------------------
  178. 順序数    8
  179. 機能
  180.     CAB32.DLL の動作中にカーソルを表示するモードか否かを設定します。
  181.     FALSE に設定した場合は、CAB32.DLL はいっさいのカーソル制御は
  182.     行いません。
  183.  
  184. 引数
  185.     bCursorMode    設定するカーソルモード。
  186.       TRUE        カーソル表示モード。
  187.       FALSE        カーソル非表示モード。
  188.  
  189. 戻り値
  190.     TRUE        正常終了。
  191.     FALSE        動作中で変更できなかった場合や、引数が間違いの場合。
  192.  
  193.  
  194. -----------------------------------------------------------------------
  195. △ WORD WINAPI CabGetCursorInterval(VOID);
  196. -----------------------------------------------------------------------
  197. 順序数    3
  198. 機能
  199.     カーソルの回転速度を得ます。
  200.  
  201. 戻り値
  202.     カーソルの回転速度(msec)
  203.  
  204. 注:    CAB32.DLL は回転カーソル表示をサポートしないので無意味ですが、
  205.     LHA.DLL との互換のために残してます。
  206.  
  207. -----------------------------------------------------------------------
  208. △ BOOL WINAPI CabSetCursorInterval(const WORD wInterval);
  209. -----------------------------------------------------------------------
  210. 順序数    4
  211. 機能
  212.     カーソルの回転速度を設定します。
  213.     ただし、CAB32.DLL の動作中には変更できません。
  214.  
  215. 引数
  216.     wInterval    カーソルの回転速度(msec)
  217.             デフォルトは 80 (msec) です。
  218.  
  219. 戻り値
  220.     TRUE        正常終了の場合。
  221.     FALSE        動作中で変更できなかった場合。
  222.  
  223. 注:    CAB32.DLL は回転カーソル表示をサポートしないので無意味ですが、
  224.     LHA.DLL との互換のために残してます。必ず TRUE が返ります。
  225.  
  226.  
  227. -----------------------------------------------------------------------
  228. X int WINAPI CabGetArcFileInfo(LPSTR szFileName, MAININFO *lpMainInfo);
  229. -----------------------------------------------------------------------
  230. 順序数    16
  231. 機能
  232.     格納されているファイルの情報を得ます。
  233.  
  234. 引数
  235.     szFileName    情報を取得すべきアーカイブファイルのファイル名。
  236.     lpMainInfo    情報を格納する構造体の変数のアドレス。
  237.  
  238. 戻り値
  239.     正常終了時に0、異常時にはエラーコード(0以外)が返る。
  240.  
  241. 注:    現状では実装されていません!!
  242.  
  243. -----------------------------------------------------------------------
  244. ◎ int WINAPI CabGetFileCount(LPCSTR szArcFile);
  245. -----------------------------------------------------------------------
  246. 順序数    17
  247. 機能
  248.     指定された書庫ファイルに格納されているファイル数を得ます。
  249.  
  250. 引数
  251.     szArcFile    格納ファイル数を得たい書庫ファイル名。
  252.  
  253. 戻り値
  254.     格納ファイル数を得る。エラーのときは -1 を返す。
  255.  
  256. -----------------------------------------------------------------------
  257. ◎ BOOL WINAPI CabQueryFunctionList(const int iFunction);
  258. -----------------------------------------------------------------------
  259. 順序数    18
  260. 機能
  261.     指定された API が CAB32.DLL で使用可能かどうかを得ます。
  262.     アプリケーション側は目的の機能(API)が有効であるかどうか、事前に
  263.     チェックするようにしてください。
  264.     特にこのバージョンでは、エントリー名だけあって実装されていない機能が
  265.     たくさんあります。必ずチェックするようにしてください。
  266.  
  267. 引数
  268.     iFunction    API を示す一意な数値。
  269.             具体的な数値については CAB32.H を参照して下さい。
  270.  
  271. 戻り値
  272.     TRUE        使用可能。
  273.     FALSE        使用出来ない、または iFunction は無効な値。
  274.  
  275. -----------------------------------------------------------------------
  276. ○ HARC WINAPI CabOpenArchive(const HWND hWnd,LPCSTR szFileName,
  277.                 const DWORD dwMode);
  278. -----------------------------------------------------------------------
  279. 順序数    21
  280. 機能
  281.     指定ファイルが CAB32.DLL に有効な書庫ファイルかどうか調べ、
  282.     有効であればオープンし、一意の数値(ハンドル)を返します。
  283.     以後の書庫ファイルへのアクセスはこのハンドルでおこないます。
  284.     アクセスを終了する時は CabCloseArchive 関数を呼ばなければ
  285.     なりません。
  286.  
  287. 引数
  288.     hWnd        CAB32.DLL を呼び出すアプリのウィンドウ・ハンドル。
  289.     szFileName    書庫ファイル名。
  290.     dwMode        処理モードを指定するフラグ。次の値を|(オア)で
  291.             組み合わせる。
  292.  
  293.         ※ 現状ではモード設定をサポートしていません。dwModeには0(ゼロ)
  294.           を指定してください。
  295.  
  296.         M_INIT_FILE_USE        レジストリーの設定を利用する。
  297.         M_REGARDLESS_INIT_FILE    レジストリーの設定を無視する。
  298.         M_NOT_USE_TIME_STAMP    タイムスタンプ検査を省略する。
  299.         M_EXTRACT_REPLACE_FILE    同名のファイルで且つファイルが
  300.                     新しい場合に解凍する。
  301.         M_EXTRACT_NEW_FILE    解凍先にファイルが存在しない場合のみ
  302.                     解凍する。
  303.         M_EXTRACT_UPDATE_FILE    ファイルが存在しないか新しいときに
  304.                     解凍する。
  305.         M_CHECK_ALL_PATH    ファイル名の検索時に全パスを検索する。
  306.         M_CHECK_FILENAME_ONLY    検索時にファイル名のみを対象とする。
  307.         M_CHECK_PATH        "-p1" と同様の検索方法を指定する。
  308.         M_CHECK_DISK_SIZE    解凍先のディスクの空き容量をチェックする。
  309.         M_REGARDLESS_DISK_SIZE    解凍先のディスクの空きをチェックしない。
  310.         M_USE_DRIVE_LETTER    格納ファイルのディレクトリ情報について
  311.                     ドライブ名も利用する。
  312.         M_NOT_USE_DRIVE_LETTER    格納ファイルのドライブ名を無視する。
  313.         M_INQUIRE_DIRECTORY    新規ディレクトリ作成の確認を行う。
  314.         M_NOT_INQUIRE_DIRECTORY    新規ディレクトリ作成の確認を行わない。
  315.         M_INQUIRE_WRITE        上書き確認を行う。
  316.         M_NOT_INQUIRE_WRITE    上書き確認を行わない。
  317.         M_CHECK_READONLY    読み込み専用ファイルを読み飛ばす。
  318.         M_REGARDLESS_READONLY    解凍先に読み込み専用ファイルがあっても
  319.                     解凍を行う。
  320.         M_REGARD_E_COMMAND    'E' コマンドと互換の解凍動作とする。
  321.         M_REGARD_X_COMMAND    'X' コマンドと互換の解凍動作とする。
  322.         M_ERROR_MESSAGE_ON    エラー時にメッセージを表示する。
  323.         M_ERROR_MESSAGE_OFF    エラー時にメッセージを表示しない。
  324.         M_BAR_WINDOW_ON        解凍状況ダイアログを表示する。
  325.         M_BAR_WINDOWS_OFF    解凍状況ダイアログを表示しない。
  326.         M_MAKE_INDEX_FILE    索引ファイルを作成する。
  327.         M_NOT_MAKE_INDEX_FILE    索引ファイルを作成しない。
  328.  
  329.  
  330. 戻り値
  331.     指定の書庫ファイルに対応したハンドル。エラー時は NULL を返します。
  332.  
  333. その他
  334.     同時に複数のハンドルを利用する事ができるかどうかは、バージョンに依存。
  335.  
  336.  
  337. -----------------------------------------------------------------------
  338. ◎ int WINAPI CabCloseArchive(HARC hArc);
  339. -----------------------------------------------------------------------
  340. 順序数    22
  341. 機能
  342.     CabOpenArchive() で割り付けたハンドルを解放する。
  343.  
  344. 引数
  345.     hArc        CabOpenArchive() で返されたハンドル。
  346.  
  347. 戻り値
  348.     正常終了時に0、異常時にはエラーコード(0以外)が返る。
  349.  
  350.  
  351. -----------------------------------------------------------------------
  352. ◎ int WINAPI CabFindFirst(HARC hArc,
  353.             LPCSTR szWildName,LPINDIVIDUALINFO lpSubInfo);
  354. -----------------------------------------------------------------------
  355. 順序数    23
  356. 機能
  357.     最初の格納ファイルの情報を得る。
  358.  
  359. 引数
  360.     hArc        CabOpenArchive() で返されたハンドル。
  361.     szWildName    検索するファイル名の指定。ワイルドカード指定が
  362.             可能とする。単一のファイル名またはワイルドカードのみ
  363.             指定できます。
  364.     lpSubInfo    結果を返すための INDIVIDUALINFO 型の構造体へのポイ
  365.             ンタ。結果を必要としない場合は NULL を指定する事。
  366.  
  367. 戻り値
  368.     0        正常終了。lpSubInfo  で指定された構造体に格納
  369.             ファイルの情報がセットされている。
  370.     -1        検索終了。
  371.  
  372.  
  373. -----------------------------------------------------------------------
  374. ◎ int WINAPI CabFindNext(HARC hArc,LPINDIVIDUALINFO lpSubInfo);
  375. -----------------------------------------------------------------------
  376. 順序数    24
  377. 機能
  378.     直前の CabFindFirst() または CabFindNext() の次の格納ファイルの
  379.     情報を得る。
  380.  
  381. 引数
  382.     hArc        CabOpenArchive() で返されたハンドル。
  383.     lpSubInfo    結果を返すための INDIVIDUALINFO 型の構造体へのポイ
  384.             ンタ。結果を必要としない場合は NULL を指定する事。
  385.  
  386. 戻り値
  387.     0        正常終了。lpSubInfo  で指定された構造体に格納
  388.             ファイルの情報がセットされている。
  389.     -1        検索終了。
  390.  
  391.  
  392. -----------------------------------------------------------------------
  393. △ int WINAPI CabExtract(HARC hArc,LPCSTR szFileName,
  394.                 LPCSTR szDirName, DWORD dwMode);
  395. -----------------------------------------------------------------------
  396. 順序数    25
  397. 機能
  398.     指定されたファイルを解凍する。
  399.  
  400. 引数
  401.     hArc        CabOpenArchive() で返されたハンドル。
  402.     szFileName    解凍するファイル名。
  403.             dwMode で指定するモードにより意味が変わる。
  404.     szDirName    解凍先のディレクトリ。
  405.             最後を \ で終わる必要はない(あっても良い)。
  406.     dwMode        CabOpenArchive() で指定可能なものの他に解凍モー
  407.             ドとして、次の値も指定出来る。
  408.  
  409.         EXTRACT_FOUND_FILE    直前の CabFindFirst() 等で
  410.                     マッチしたファイルを解凍。
  411.         EXTRACT_NAMED_FILE    szFileName で指定されたファイル
  412.                     を解凍。
  413.  
  414. 戻り値
  415.     正常終了時に0、異常時にはエラーコード(0以外)が返る。
  416.  
  417. 注:    現状はエントリーが存在するだけで、必ず失敗を返します!!
  418.  
  419. -----------------------------------------------------------------------
  420. ◎ int WINAPI CabGetArcFileName(HARC hArc,LPCSTR lpBuffer,int nSize);
  421. -----------------------------------------------------------------------
  422. 順序数    31
  423. 機能
  424.     書庫ファイル名を得る。
  425.  
  426. 引数
  427.     hArc        CabOpenArchive() で返されたハンドル。
  428.     lpBuffer    ファイル名を格納するバッファ。
  429.     nSize        バッファのサイズ。
  430.  
  431. 戻り値
  432.     正常終了時に0、異常時にはエラーコード(0以外)が返る。
  433.  
  434.  
  435. -----------------------------------------------------------------------
  436. ◎ DWORD WINAPI CabGetArcFileSize(HARC hArc);
  437. -----------------------------------------------------------------------
  438. 順序数    32
  439. 機能
  440.     書庫ファイルのサイズを得る。
  441.  
  442. 引数
  443.     hArc        CabOpenArchive() で返されたハンドル。
  444.  
  445. 戻り値
  446.     書庫ファイルのサイズ。エラー時には -1 を返す。
  447.  
  448.  
  449. -----------------------------------------------------------------------
  450. ◎ DWORD WINAPI CabGetArcOriginalSize(HARC hArc);
  451. -----------------------------------------------------------------------
  452. 順序数    33
  453. 機能
  454.     現時点までの検索(CabFindFirst() および CabFindNext() )に
  455.     マッチしたファイルの(解凍後の)サイズの合計を得る。
  456.     CabFindNext() の検索が終了した後では、書庫ファイル中の検索で
  457.     一致した全ファイルの合計値となる。
  458.  
  459. 引数
  460.     hArc        CabOpenArchive() で返されたハンドル。
  461.  
  462. 戻り値
  463.     合計サイズ。エラー時には -1 を返す。
  464.  
  465.  
  466. -----------------------------------------------------------------------
  467. △ DWORD WINAPI CabGetArcCompressedSize(HARC hArc);
  468. -----------------------------------------------------------------------
  469. 順序数    34
  470. 機能
  471.     検索にマッチしたファイルの圧縮サイズの合計を得る。
  472.     その他詳細は CabGetArcOriginalSize() に準ずる。
  473.  
  474. 引数
  475.     hArc        CabOpenArchive() で返されたハンドル。
  476.  
  477. 戻り値
  478.     圧縮サイズの合計。エラー時には -1 を返す。
  479.  
  480. 注:    現状はエントリーが存在するだけで、必ず失敗を返します!!
  481.  
  482. -----------------------------------------------------------------------
  483. △ WORD WINAPI CabGetArcRatio(HARC hArc);
  484. -----------------------------------------------------------------------
  485. 順序数    35
  486. 機能
  487.     検索にマッチしたファイルの全体の圧縮率を得る。
  488.     その他詳細は CabGetArcOriginalSize() に準ずる。
  489.  
  490. 引数
  491.     hArc        CabOpenArchive() で返されたハンドル。
  492.  
  493. 戻り値
  494.     全体の圧縮率(パーミル)。エラー時には -1。
  495.  
  496. 注:    現状はエントリーが存在するだけで、必ず失敗を返します!!
  497.  
  498. -----------------------------------------------------------------------
  499. ◎ WORD WINAPI CabGetArcDate(HARC hArc);
  500. -----------------------------------------------------------------------
  501. 順序数    36
  502. 機能
  503.     書庫ファイルの日付を得る。
  504.  
  505. 引数
  506.     hArc        CabOpenArchive() で返されたハンドル。
  507.  
  508. 戻り値
  509.     書庫ファイルの日付。エラー時には -1。
  510.     形式は MSDOS のタイムスタンプに準ずる。
  511.  
  512.  
  513. -----------------------------------------------------------------------
  514. ◎ WORD WINAPI CabGetArcTime(HARC hArc);
  515. -----------------------------------------------------------------------
  516. 順序数    37
  517. 機能
  518.     書庫ファイルの時刻を得る。
  519.  
  520. 引数
  521.     hArc        CabOpenArchive() で返されたハンドル。
  522.  
  523. 戻り値
  524.     書庫ファイルの時刻。エラー時には -1。
  525.     形式は MSDOS のタイムスタンプに準ずる。
  526.  
  527.  
  528. -----------------------------------------------------------------------
  529. △ UINT WINAPI CabGetArcOSType(HARC hArc);
  530. -----------------------------------------------------------------------
  531. 順序数    38
  532. 機能
  533.     書庫ファイル作成に使用されたOSの種類を得る。
  534.  
  535. 引数
  536.     hArc        CabOpenArchive() で返されたハンドル。
  537.  
  538. 戻り値
  539.     OSの種類を示す数値。
  540.     0 : MS-DOS    1 : PRIMOS    2 : UNIX    3 : AMIGA
  541.     4 : MAC-OS    5 : OS/2    6 : APPLE GS    7 : ATARI ST
  542.     8 : NEXT    9 : VAX VMS    10: その他。
  543.     11: OS9        12: OS/68K    13: OS/386    14: HUMAN
  544.     15: CP/M    16: FLEX    17: Runser
  545.     18: VM CMS    19: Z SYSTEM    20: TOPS20    21: Windows NTFS
  546.     22: QDOS    23: VFAT95    24: MVS        25: BEBOX
  547.     -1: エラー。
  548.  
  549. 注:    現状はエントリーが存在するだけで、必ず失敗を返します!!
  550.  
  551. -----------------------------------------------------------------------
  552. △ int WINAPI CabIsSFXFile(HARC hArc);
  553. -----------------------------------------------------------------------
  554. 順序数    39
  555. 機能
  556.     書庫ファイルが自己解凍ファイルかどうかを調べる。
  557.  
  558. 引数
  559.     hArc        CabOpenArchive() で返されたハンドル。
  560.  
  561. 戻り値
  562.     0    通常の書庫ファイル。
  563.     1    自己解凍ファイル。
  564.     -1    エラー。
  565.  
  566. 注:    現状はエントリーが存在するだけで、必ず失敗を返します!!
  567.  
  568. -----------------------------------------------------------------------
  569. ◎ int WINAPI CabGetFileName(HARC hArc,LPCSTR lpBuffer,int nSize);
  570. -----------------------------------------------------------------------
  571. 順序数    40
  572. 機能
  573.     格納ファイルのファイル名を得る。
  574.  
  575. 引数
  576.     hArc        CabOpenArchive() で返されたハンドル。
  577.     lpBuffer    ファイル名を格納するバッファ。
  578.     nSize        バッファのサイズ。
  579.  
  580. 戻り値
  581.     正常終了時には0が返され,lpBuffer にファイル名が格納される。
  582.  
  583. その他
  584.     「格納ファイル」とは、直前の検索(CabFindFirst() または
  585.      CabFindNext() )にマッチしたファイルを示す。
  586.     以下の各APIでも同様。
  587.  
  588.  
  589. -----------------------------------------------------------------------
  590. ◎ DWORD WINAPI CabGetOriginalSize(HARC hArc);
  591. -----------------------------------------------------------------------
  592. 順序数    41
  593. 機能
  594.     格納ファイルの(解凍後の)サイズを得る。
  595.  
  596. 引数
  597.     hArc        CabOpenArchive() で返されたハンドル。
  598.  
  599. 戻り値
  600.     格納ファイルのサイズ。エラー時は -1。
  601.  
  602.  
  603. -----------------------------------------------------------------------
  604. △ DWORD WINAPI CabGetCompressedSize(HARC harc);
  605. -----------------------------------------------------------------------
  606. 順序数    42
  607. 機能
  608.     格納ファイルの圧縮サイズを得る。
  609.  
  610. 引数
  611.     hArc        CabOpenArchive() で返されたハンドル。
  612.  
  613. 戻り値
  614.     格納ファイルの圧縮サイズ。エラー時は -1。
  615.  
  616. 注:    現状はエントリーが存在するだけで、必ず失敗を返します!!
  617.  
  618. -----------------------------------------------------------------------
  619. △ WORD WINAPI CabGetRatio(HARC hArc);
  620. -----------------------------------------------------------------------
  621. 順序数    43
  622. 機能
  623.     格納ファイルの圧縮率を得る。
  624.  
  625. 引数
  626.     hArc        CabOpenArchive() で返されたハンドル。
  627.  
  628. 戻り値
  629.     格納ファイルの圧縮率(パーミル)。エラー時は -1。
  630.  
  631. 注:    現状はエントリーが存在するだけで、必ず失敗を返します!!
  632.  
  633. -----------------------------------------------------------------------
  634. ◎ WORD WINAPI CabGetDate(HARC hArc);
  635. -----------------------------------------------------------------------
  636. 順序数    44
  637. 機能
  638.     格納ファイルの日付を得る。
  639.  
  640. 引数
  641.     hArc        CabOpenArchive() で返されたハンドル。
  642.  
  643. 戻り値
  644.     格納ファイルの日付。エラー時は -1。
  645.     形式は MSDOS のタイムスタンプに準ずる。
  646.  
  647.  
  648. -----------------------------------------------------------------------
  649. ◎ WORD WINAPI CabGetTime(HARC hArc);
  650. -----------------------------------------------------------------------
  651. 順序数    45
  652. 機能
  653.     格納ファイルの時刻を得る。
  654.  
  655. 引数
  656.     hArc        CabOpenArchive() で返されたハンドル。
  657.  
  658. 戻り値
  659.     格納ファイルの時刻。エラー時は -1。
  660.     形式は MSDOS のタイムスタンプに準ずる。
  661.  
  662.  
  663. -----------------------------------------------------------------------
  664. △ DWORD WINAPI CabGetCRC(HARC hArc);
  665. -----------------------------------------------------------------------
  666. 順序数    46
  667. 機能
  668.     格納ファイルのチェックコード(CRCやチェックサム等)を得る。
  669.  
  670. 引数
  671.     hArc        CabOpenArchive() で返されたハンドル。
  672.  
  673. 戻り値
  674.     格納ファイルのチェックコード。エラー時は -1。
  675.  
  676. 注:    現状はエントリーが存在するだけで、必ず失敗を返します!!
  677.  
  678. -----------------------------------------------------------------------
  679. ◎ int WINAPI CabGetAttribute(HARC hArc);
  680. -----------------------------------------------------------------------
  681. 順序数    47
  682. 機能
  683.     格納ファイルの属性を得る。
  684.  
  685. 引数
  686.     hArc        CabOpenArchive() で返されたハンドル。
  687.  
  688. 戻り値
  689.     格納ファイルの属性。以下の各ビットをオア(|)接続したもの。
  690.     エラー時は -1。
  691.  
  692.     0x01    FA_RDONLY    読み込み専用ファイル。
  693.     0x02    FA_HIDDEN    不可視属性ファイル。
  694.     0x04    FA_SYSTEM    システムファイル。
  695.     0x08    FA_LABEL    ボリュームラベル。
  696.     0x10    FA_DIREC    ディレクトリ。
  697.     0x20    FA_ARCH        保存ビット。
  698.  
  699.  
  700. -----------------------------------------------------------------------
  701. △ UINT WINAPI CabGetOSType(HARC hArc);
  702. -----------------------------------------------------------------------
  703. 順序数    48
  704. 機能
  705.     格納ファイルが作成されたOSを得る。
  706.  
  707. 引数
  708.     hArc        CabOpenArchive() で返されたハンドル。
  709.  
  710. 戻り値
  711.     OSを示す数値。
  712.     詳細は CabGetArcOSType() を参照。
  713.  
  714. 注:    現状はエントリーが存在するだけで、必ず失敗を返します!!
  715.  
  716. -----------------------------------------------------------------------
  717. △ int WINAPI CabExtractMem(const HWND hWnd,LPCSTR szCmdLine,
  718.         LPBYTE szBuffer,const DWORD dwSize,time_t *lpTime,
  719.         LPWORD lpwAttr,LPDWORD lpdwWriteSize);
  720. -----------------------------------------------------------------------
  721. 順序数    
  722. 機能
  723.     メモリバッファへ解凍します。
  724.  
  725. 引数
  726.     hWnd        CAB32.DLL を呼び出すアプリのウィンドウのハンドル。
  727.             CAB32.DLL は実行時にこのウィンドウに対して
  728.             EnableWindow() を実行しウィンドウの動作を抑制します。
  729.             ウィンドウが存在しないコンソールアプリの場合や,指定
  730.             する必要のない場合は NULL を渡します。
  731.     szCmdLine    CAB32.DLL に渡すコマンドの文字列。Cab() と同じもの
  732.             が指定できますが,コマンドは無視されます。
  733.     lpBuffer    展開イメージを格納するバッファ。
  734.     dwSize        バッファのサイズ。CAB32.DLL が返す結果のサイズより指
  735.             定されたサイズが小さい場合は指定サイズまで出力されます。
  736.     lpTime        解凍されたファイルの UTC でのタイムスタンプを得ます。
  737.             必要ない場合は NULL を指定します。
  738.     lpwAttr        解凍されたファイルの属性を得ます。 必要ない場合は NULL
  739.             を指定します。
  740.     lpdwWriteSize    解凍の結果書き込まれたサイズを得ます。必要ない場合は
  741.             NULL を指定します。
  742.  
  743. 戻り値
  744.     正常終了の時        0。
  745.     エラーが発生した場合    0 以外の数。
  746.  
  747. その他
  748.     API の性格上,書庫やファイル名にワイルドカードを使うのは無意味と思
  749.     われます。
  750.  
  751. 注:    現状はエントリーが存在するだけで、必ず失敗を返します!!
  752.  
  753. -----------------------------------------------------------------------
  754. ○ BOOL WINAPI CabSetOwnerWindow(HWND hWnd);
  755. -----------------------------------------------------------------------
  756. 順序数    90
  757. 機能
  758.     CAB32.DLL のメッセージの送信先ウィンドウを設定します。
  759.     CAB32.DLL はここで指定されたウィンドウに解凍状況等を知らせる
  760.     メッセージを送信します。圧縮状況は通知されません。
  761.     メッセージの詳細については、下記「ウィンドウズ・メッセージ」を参照。
  762.  
  763. 引数
  764.     hWnd        オーナーウィンドウに指定するウィンドウのハンドル
  765.  
  766. 戻り値
  767.     正常終了の場合 TRUE を返します。
  768.     動作中で変更できなかった場合や, 既にこの API で別のウィンドウが
  769.     設定されている場合には FALSE を返します。
  770.  
  771.  
  772. -----------------------------------------------------------------------
  773. ◎ BOOL WINAPI CabClearOwnerWindow(VOID);
  774. -----------------------------------------------------------------------
  775. 順序数    91
  776. 機能
  777.     CabSetOwnerWindow() で設定したウィンドウの設定を解除します。
  778.  
  779. 戻り値
  780.     正常終了の場合 TRUE を返します。
  781.     動作中で変更できなかった場合やには FALSE を返します。
  782.  
  783.  
  784. -----------------------------------------------------------------------
  785. ◎ BOOL WINAPI CabSetOwnerWindowEx(HWND hWnd,LPARCHIVERPROC lpArcProc)
  786. -----------------------------------------------------------------------
  787. 順序数    92
  788. 機能
  789.     CAB32.DLL の解凍状況を受け取るためのコールバック関数の指定を行
  790.     います。lpArcProc に NULL を指定すると hWnd で指定したウィンドウ
  791.     に メッセージを送出します(CabSetOwnerWindow(hWnd)と同じ)。
  792.  
  793. 戻り値
  794.     正常終了の場合 TRUE を返します。
  795.     動作中で変更できなかった場合や, 既にこの API で別のウィンドウが
  796.     設定されている場合には FALSE を返します。
  797.  
  798. -----------------------------------------------------------------------
  799. ◎ BOOL WINAPI CabKillOwnerWindowEx(HWND hWnd)
  800. -----------------------------------------------------------------------
  801. 順序数    93
  802. 機能
  803.     CabSetOwnerWindowEx() で設定したウィンドウの設定を解除します。
  804.  
  805. 戻り値
  806.     正常終了の場合 TRUE を返します。
  807.     動作中で変更できなかった場合や指定した hWnd が現在の設定と一致
  808.     しない場合には FALSE を返します。
  809.  
  810.  
  811. -----------------------------------------------------------------------
  812. ウィンドウズ・メッセージ
  813. -----------------------------------------------------------------------
  814. ●wm_arcextract
  815.  
  816. wm_arcextract
  817.  
  818. nMode = (int)wParam            /* 通知モードを表す */
  819. lpEis = (LPEXTRACTINGINFO)lParam    /* 構造体を指すポインタ */
  820.  
  821.  wm_arcextract メッセージは,CabSetOwnerWindow() で設定したウィンドウ
  822. に CAB32.DLL から送られます。
  823. このメッセージを受け取ることにより CAB32.DLL がこれから処理する格納ファ
  824. イル名やファイルサイズ等を得ることができます。
  825.  
  826.     nMode        wParam の値です。CAB32.DLL の処理の状態を表します。
  827.  
  828.     0 : 該当ファイルの処理を開始することを表します。
  829.     1 : 該当ファイルの展開中であることを表します。
  830.     2 : 処理を終え,lpEis のメモリを開放しようとしていることを表します。
  831.  
  832.     lpEis        lParam の値です。 ファイル名等を格納する
  833.             EXTRACTINGINFO 構造体を指すポインタです。
  834.  
  835. 戻り値
  836.  
  837.  このメッセージを処理するアプリケーションは、FALSEを返さなければなりません。
  838. FALSE 以外を返すことにより,CAB32.DLL の解凍処理を中止させることができます。
  839.  
  840.  
  841. -----------------------------------------------------------------------
  842. コールバック関数
  843. -----------------------------------------------------------------------
  844.  
  845. CAB32.DLL の解凍状況に応じて、CabSetOwnerWindowEx() で設定したコールバック
  846. 関数が呼ばれます。
  847. このコールバック関数に渡される引数により、CAB32.DLL がこれから処理する格納
  848. ファイル名やファイルサイズ等を得ることができます。
  849.  
  850.     typedef BOOL CALLBACK ARCHIVERPROC(HWND hWnd,UINT uMsg,
  851.             UINT nMode,LPEXTRACTINGINFOEX lpEis);
  852.  
  853.     hWnd        SetOwnerWindowEx で指定したウィンドウハンドルが渡され
  854.             ます。
  855.     uMsg        現在のところは wm_arcextract となります。
  856.     nMode        wm_arcextract の wParam,つまり nMode と同じ意味です。
  857.     lpEis        EXTRACTINGINFOEX 構造体へのポインタです。格納ファイルに
  858.              関する情報が得られます。
  859.  
  860. ARCHIVERPROC は CAB32.DLL に処理を継続させるときは TRUE、中止させるときは
  861. FALSE を返さなければなりません。
  862.  
  863. ※ 解凍処理の場合のみコールバックし、圧縮処理ではコールバックはしません。
  864.  
  865. -----------------------------------------------------------------------
  866. EXTRACTINGINFO の構造
  867. -----------------------------------------------------------------------
  868. 構造体定義
  869.         typedef struct {
  870.             DWORD    dwFileSize;
  871.             DWORD    dwWriteSize;
  872.             char    szSourceFileName[FNAME32_MAX + 1];
  873.             char    dummy1[3];
  874.             char    szDestFileName[FNAME32_MAX + 1];
  875.             char    dummy[3];
  876.         }  EXTRACTINGINFO
  877.  
  878. メンバの説明
  879.     dwFileSize        格納ファイルのサイズ。
  880.     dwWriteSize        解凍処理で書き込んだサイズ。
  881.     szSourceFileName    処理を行う格納ファイル名。
  882.     szDestFileName        実際に書き込まれるパス名。
  883.  
  884. -----------------------------------------------------------------------
  885. EXTRACTINGINFOEX の構造
  886. -----------------------------------------------------------------------
  887. 構造体定義
  888.         typedef struct {
  889.                     EXTRACTINGINFO exinfo;
  890.             DWORD dwCompressedSize;
  891.             DWORD dwCRC;
  892.             UINT  uOSType;
  893.             WORD  wRatio;
  894.             WORD  wDate;
  895.             WORD  wTime;
  896.             char  szAttribute[8];
  897.             char  szMode[8];
  898.         } EXTRACTINGINFOEX;
  899.  
  900.     exinfo            EXTRACTINGINFO 構造体が格納されます。
  901.     dwCompressedSize    格納ファイルの圧縮サイズ。
  902.     dwCRC            格納ファイルのチェックサム。
  903.     uOSType            ファイルを格納した際に使われたOS。
  904.     wRatio            格納ファイルの圧縮率。
  905.     wDate            格納ファイルの更新日付(DOS 形式)。
  906.     wTime            格納ファイルの更新時間(DOS 形式)。
  907.     szAttribute        格納ファイルの属性。
  908.     szMode            CAB32.DLL では圧縮メソッドの文字列が格
  909.                 納されています。
  910.  
  911. ------------------------------------------------------------------------
  912. 処理の流れ
  913. ------------------------------------------------------------------------
  914.  解凍される格納ファイルごとに次の1・2を繰り返す。
  915.  
  916. 1.nMode 0 でメッセージを送出。ファイル名等を得られる。
  917. 2.nMode 1 でメッセージを送出。書き込みサイズが得られる。そのファイルに
  918.     ついての解凍処理が終了するまで,このメッセージを送出し続ける。
  919.  
  920.  すべての処理が終了した時点で(解凍状況表示を消すタイミング),
  921.  
  922. 3.nMode 2 でメッセージを送出。
  923.  
  924.  
  925.  
  926. -----------------------------------------------------------------------
  927.     API の返すエラーコード
  928. -----------------------------------------------------------------------
  929.  
  930. ■警告    :該当ファイルについての処理をスキップするだけで実行を中止する事
  931.         はない。
  932.  
  933. ERROR_DISK_SPACE
  934.     解凍する為のディスクの空きが足りません。
  935. ERROR_READ_ONLY
  936.     解凍先のファイルはリードオンリーです。
  937. ERROR_USER_SKIP
  938.     ユーザーによって解凍をスキップされました。
  939. ERROR_UNKOWN_TYPE
  940.     格納ファイルの種類が MS-DOS で扱える形式(BINARY 及び TEXT)以外で
  941.     す。
  942. ERROR_METHOD
  943.     CAB32.DLL で扱えない格納モードで格納されています。
  944. ERROR_PASSWORD_FILE
  945.     格納ファイルにパスワードがかかっています。
  946. ERROR_VERSION
  947.     格納ファイルが CAB32.DLL が対応していないバージョンの形式です。
  948. ERROR_FILE_CRC
  949.     格納ファイルのチェックサムが合っていません。
  950. ERROR_FILE_OPEN
  951.     解凍時にファイルを開けませんでした。
  952. ERROR_MORE_FRESH
  953.     より新しいファイルが解凍先に存在しています。
  954. ERROR_NOT_EXIST
  955.     ファイルは解凍先に存在していません。
  956. ERROR_ALREADY_EXIT
  957.     ファイルが解凍先に既に存在しています。
  958. ERROR_TOO_MANY_FILES
  959.     格納ファイル数が限界を越えている。処理は正常に行われているが,限界
  960.     を越えた部分については情報は得られていない。
  961.  
  962. ■エラー  :致命的なエラーでその時点で実行を中止する。
  963.  
  964. ERROR_DIRECTORY
  965.     ディレクトリが作成できません。
  966. ERROR_CANNOT_WRITE
  967.     解凍中に書き込みエラーが生じました。
  968. ERROR_HUFFMAN_CODE
  969.     アーカイブファイルのハフマンコードが壊れています。
  970. ERROR_COMMENT_HEADER
  971.     アーカイブファイルのコメントヘッダが壊れています。
  972. ERROR_HEADER_CRC
  973.     アーカイブファイルのヘッダのチェックサムが合っていません。
  974. ERROR_HEADER_BROKEN
  975.     アーカイバファイルのヘッダが壊れています。
  976. ERROR_ARCHIVE_FILE_OPEN
  977.     アーカイブファイルを開く事が出来ません。
  978. ERROR_NOT_ARCHIVE_FILE
  979.     指定したファイルは、アーカイブファイルではありません。
  980. ERROR_CANNOT_READ
  981.     アーカイブファイルの読み込み時に読み込みエラーが出ました。
  982. ERROR_FILE_STYLE
  983.     指定されたファイルは、アーカイブファイルではありません。
  984. ERROR_COMMAND_NAME
  985.     コマンド指定が間違っています。
  986. ERROR_MORE_HEAP_MEMORY
  987.     作業用のためのヒープメモリが不足しています。
  988. ERROR_ENOUGH_MEMORY
  989.     グローバルメモリが不足しています。
  990. ERROR_ALREADY_RUNNING
  991.     既に別のプロセスから CAB32.DLL が呼ばれています。
  992.  
  993. -----------------------------------------------------------------------
  994. レジストリーの設定
  995. -----------------------------------------------------------------------
  996.  
  997.     CAB32.DLL は明示的に解凍先ディレクトリやオプションが指定されなかっ
  998.     た場合に、もし レジストリーに該当の省略値が設定されていればそれを
  999.     使用します。コマンドラインで明示的に指定された場合は,コマンド指定
  1000.     が優先的に使用されます。
  1001.     レジストリーにも指定されていない場合は、CAB32.DLL 本来のデフォル
  1002.     トの動作となります(カレントディレクトリーに解凍する)。
  1003.  
  1004.  
  1005.  
  1006.  
  1007. -----------------------------------------------------------------------
  1008. 注意
  1009. -----------------------------------------------------------------------
  1010.  
  1011. LHA.DLL Ver 1.10 互換の API 及び CabCheckArchive() 以外の API については
  1012. 今後仕様変更される事があります。
  1013.  
  1014. =======================================================================
  1015.  
  1016.