home *** CD-ROM | disk | FTP | other *** search
/ DOS/V Power Report 2001 July / VPR0107A.BIN / cabapi.H < prev    next >
C/C++ Source or Header  |  2000-08-01  |  12KB  |  344 lines

  1. ////////////////////////////////////////////////////////////
  2. // CABAPI.H      Kuniaki Miyauchi
  3.  
  4. #if !defined(CABAPI_H)
  5. #define CABAPI_H
  6.  
  7. #define CABAPI_VERSION    92
  8.  
  9. #ifndef FNAME_MAX32
  10. #define FNAME_MAX32        512
  11. #endif
  12.  
  13. #if defined(__BORLANDC__)
  14. #pragma option -a-
  15. #else
  16. #pragma pack(1)
  17. #endif
  18.  
  19. #ifndef ARC_DECSTRACT
  20. #define ARC_DECSTRACT
  21. typedef    HGLOBAL    HARC;
  22.  
  23. typedef struct {
  24.     DWORD             dwOriginalSize;        /* ファイルのサイズ */
  25.      DWORD             dwCompressedSize;    /* 圧縮後のサイズ */
  26.     DWORD            dwCRC;                /* 格納ファイルのチェックサム */
  27.     UINT            uFlag;                /* 処理結果 */
  28.     UINT            uOSType;            /* 書庫作成に使われたOS */
  29.     WORD            wRatio;                /* 圧縮率 */
  30.     WORD            wDate;                /* 格納ファイルの日付(DOS 形式) */
  31.     WORD             wTime;                /* 格納ファイルの時刻(〃) */
  32.     char            szFileName[FNAME_MAX32 + 1];    /* 書庫名 */
  33.     char            dummy1[3];
  34.     char            szAttribute[8];        /* 格納ファイルの属性(書庫固有) */
  35.     char            szMode[8];            /* 格納ファイルの格納モード(〃) */
  36. }    INDIVIDUALINFO, *LPINDIVIDUALINFO;
  37.  
  38. typedef struct {
  39.     DWORD             dwFileSize;        /* 格納ファイルのサイズ */
  40.     DWORD            dwWriteSize;    /* 書き込みサイズ */
  41.     char            szSourceFileName[FNAME_MAX32 + 1];    /* 格納ファイル名 */
  42.     char            dummy1[3];
  43.     char            szDestFileName[FNAME_MAX32 + 1];
  44.                                     /* 解凍先または圧縮元パス名 */
  45.     char            dummy[3];
  46. }    EXTRACTINGINFO, *LPEXTRACTINGINFO;
  47.  
  48. typedef struct {
  49.     EXTRACTINGINFO exinfo;
  50.     DWORD dwCompressedSize;
  51.     DWORD dwCRC;
  52.     UINT  uOSType;
  53.     WORD  wRatio;
  54.     WORD  wDate;
  55.     WORD  wTime;
  56.     char  szAttribute[8];
  57.     char  szMode[8];
  58. } EXTRACTINGINFOEX, *LPEXTRACTINGINFOEX;
  59.  
  60. #endif
  61.  
  62. typedef struct {
  63.     UINT            uTotalFiles;
  64.     UINT            uCountInfoFiles;
  65.     UINT            uErrorCount;
  66.     LONG            lDiskSpace;
  67.     HGLOBAL            hSubInfo;
  68. }    LHALOCALINFO;
  69.  
  70. #if !defined(__BORLANDC__)
  71. #pragma pack()
  72. #else
  73. #pragma option -a.
  74. #endif
  75.  
  76. #if !defined(__BORLANDC__)
  77. #define    _export
  78. #endif
  79.  
  80. #ifdef __cplusplus
  81. extern "C" {
  82. #endif
  83.  
  84. /* ### LHA.DLL Ver 1.1 と互換性のある API です。### */
  85. WORD WINAPI CabGetVersion(VOID);
  86.  
  87. BOOL WINAPI CabGetRunning(VOID);
  88.  
  89. BOOL WINAPI CabGetBackGroundMode(VOID);
  90. BOOL WINAPI CabSetBackGroundMode(const BOOL bBkgndMode);
  91. BOOL WINAPI CabGetCursorMode(VOID);
  92. BOOL WINAPI CabSetCursorMode(const BOOL bCursorMode);
  93. WORD WINAPI CabGetCursorInterval(VOID);
  94. BOOL WINAPI CabSetCursorInterval(const WORD wInterval);
  95.  
  96. int WINAPI Cab(const HWND hwnd, LPCSTR pszCmdLine,
  97.                         LPSTR pszOutput, const DWORD dwSize);
  98.  
  99. /* ###『統合アーカイバ API』共通の API です。### */
  100. #if !defined(CHECKARCHIVE_RAPID)
  101. #define    CHECKARCHIVE_RAPID        0    /* 簡易(最初の3ヘッダまで) */
  102. #define    CHECKARCHIVE_BASIC        1    /* 標準(全てのヘッダ) */
  103. #define    CHECKARCHIVE_FULLCRC    2    /* 完全(格納ファイルの CRC チェック) */
  104.  
  105.     /* 以下のフラグは上記と組み合わせて使用。*/
  106. #define CHECKARCHIVE_RECOVERY    4   /* 破損ヘッダを読み飛ばして処理 */
  107. #define CHECKARCHIVE_SFX        8    /* SFX かどうかを返す */
  108. #define CHECKARCHIVE_ALL        16    /* ファイルの最後まで検索する */
  109. #endif
  110.  
  111. BOOL WINAPI CabCheckArchive(LPCSTR pszArchive, const int iMode);
  112.  
  113. int WINAPI CabGetFileCount(LPCSTR pszArchive);
  114.  
  115. #if !defined(UNPACK_CONFIG_MODE)
  116. #define    UNPACK_CONFIG_MODE        1    /* 解凍系の設定 */
  117. #define PACK_CONFIG_MODE        2    /* 圧縮系の設定 */
  118. #endif
  119.  
  120. BOOL WINAPI CabConfigDialog(const HWND hwnd, LPSTR pszComBuffer,
  121.                         const int iMode);
  122.  
  123. #if !defined(ISARC_FUNCTION_START)
  124. #define ISARC_FUNCTION_START            0
  125. #define ISARC                            0    /* Cab */
  126. #define ISARC_GET_VERSION                1    /* CabGetVersion */
  127. #define ISARC_GET_CURSOR_INTERVAL        2    /* CabGetCursorInterval */
  128. #define ISARC_SET_CURSOR_INTERVAL        3    /* CabSetCursorInterval */
  129. #define ISARC_GET_BACK_GROUND_MODE        4    /* CabGetBackGroundMode */
  130. #define ISARC_SET_BACK_GROUND_MODE        5    /* CabSetBackGroundMode */
  131. #define ISARC_GET_CURSOR_MODE            6    /* CabGetCursorMode */
  132. #define ISARC_SET_CURSOR_MODE            7    /* CabSetCursorMode */
  133. #define ISARC_GET_RUNNING                8    /* CabGetRunning */
  134.  
  135. #define ISARC_CHECK_ARCHIVE                16    /* CabCheckArchive */
  136. #define ISARC_CONFIG_DIALOG                17    /* CabConfigDialog */
  137. #define ISARC_GET_FILE_COUNT            18    /* CabGetFileCount */
  138. #define ISARC_QUERY_FUNCTION_LIST        19    /* CabQueryFunctionList */
  139. #define ISARC_HOUT                        20    /* (CabHOut) */
  140. #define ISARC_STRUCTOUT                    21    /* (CabStructOut) */
  141. #define ISARC_GET_ARC_FILE_INFO            22    /* CabGetArcFileInfo */
  142.  
  143. #define ISARC_OPEN_ARCHIVE                23    /* CabOpenArchive */
  144. #define ISARC_CLOSE_ARCHIVE                24    /* CabCloseArchive */
  145. #define ISARC_FIND_FIRST                25    /* CabFindFirst */
  146. #define ISARC_FIND_NEXT                    26    /* CabFindNext */
  147. #define ISARC_EXTRACT                    27    /* (CabExtract) */
  148. #define ISARC_ADD                        28    /* (CabAdd) */
  149. #define ISARC_MOVE                        29    /* (CabMove) */
  150. #define ISARC_DELETE                    30    /* (CabDelete) */
  151.  
  152. #define ISARC_GET_ARC_FILE_NAME            40    /* CabGetArcFileName */
  153. #define ISARC_GET_ARC_FILE_SIZE            41    /* CabGetArcFileSize */
  154. #define ISARC_GET_ARC_ORIGINAL_SIZE        42    /* CabArcOriginalSize */
  155. #define ISARC_GET_ARC_COMPRESSED_SIZE    43    /* CabGetArcCompressedSize */
  156. #define ISARC_GET_ARC_RATIO                44    /* CabGetArcRatio */
  157. #define ISARC_GET_ARC_DATE                45    /* CabGetArcDate */
  158. #define ISARC_GET_ARC_TIME                46    /* CabGetArcTime */
  159. #define ISARC_GET_ARC_OS_TYPE            47    /* CabGetArcOSType */
  160. #define ISARC_GET_ARC_IS_SFX_FILE        48    /* CabGetArcIsSFXFile */
  161. #define ISARC_GET_FILE_NAME                57    /* CabGetFileName */
  162. #define ISARC_GET_ORIGINAL_SIZE            58    /* CabGetOriginalSize */
  163. #define ISARC_GET_COMPRESSED_SIZE        59    /* CabGetCompressedSize */
  164. #define ISARC_GET_RATIO                    60    /* CabGetRatio */
  165. #define ISARC_GET_DATE                    61    /* CabGetDate */
  166. #define ISARC_GET_TIME                    62    /* CabGetTime */
  167. #define ISARC_GET_CRC                    63    /* CabGetCRC */
  168. #define ISARC_GET_ATTRIBUTE                64    /* CabGetAttribute */
  169. #define ISARC_GET_OS_TYPE                65    /* CabGetOSType */
  170. #define ISARC_GET_METHOD                66    /* CabGetMethod */
  171. #define ISARC_GET_WRITE_TIME            67    /* CabGetWriteTime */
  172. #define ISARC_GET_CREATE_TIME            68    /* CabGetCreateTime */
  173. #define ISARC_GET_ACCESS_TIME            69    /* CabGetAccessTime */
  174.  
  175. #define ISARC_FUNCTION_END                69
  176. #endif    /* ISARC_FUNCTION_START */
  177.  
  178. BOOL WINAPI CabQueryFunctionList(const int iFunction);
  179.  
  180. #ifndef WM_ARCEXTRACT
  181. #define    WM_ARCEXTRACT    "wm_arcextract"
  182.  
  183. #define    ARCEXTRACT_BEGIN        0    /* 該当ファイルの処理の開始 */
  184. #define    ARCEXTRACT_INPROCESS    1    /* 該当ファイルの展開中 */
  185. #define    ARCEXTRACT_END            2    /* 処理終了、関連メモリを開放 */
  186. #define ARCEXTRACT_OPEN            3    /* 該当書庫の処理の開始 */
  187. #define ARCEXTRACT_COPY            4    /* ワークファイルの書き戻し */
  188.  
  189. WINAPI CabSetOwnerWindow(const HWND hwnd);
  190. BOOL WINAPI CabClearOwnerWindow(VOID);
  191.  
  192. typedef BOOL CALLBACK ARCHIVERPROC(HWND hwnd, UINT uMsg,
  193.                         UINT nState, LPEXTRACTINGINFOEX lpEis);
  194. typedef ARCHIVERPROC *LPARCHIVERPROC;
  195.  
  196. BOOL WINAPI CabSetOwnerWindowEx(HWND hwnd, LPARCHIVERPROC lpArcProc);
  197. BOOL WINAPI CabKillOwnerWindowEx(HWND hwnd);
  198. #endif
  199.  
  200. /* OpenArchive 系 API です。 */
  201.  
  202. #if !defined(EXTRACT_FOUND_FILE)
  203. /* MODE (for UnarjOpenArchive) */
  204. #define M_INIT_FILE_USE            0x00000001L    /* レジストリの設定を使用 */
  205. #define M_REGARDLESS_INIT_FILE    0x00000002L    /* 〃 を使用しない */
  206. #define M_CHECK_ALL_PATH        0x00000100L    /* 厳格なファイル名サーチ */
  207. #define M_CHECK_FILENAME_ONLY    0x00000200L    /* 〃を行わない */
  208. #define M_USE_DRIVE_LETTER        0x00001000L    /* ドライブ名から格納 */
  209. #define M_NOT_USE_DRIVE_LETTER    0x00002000L    /* 〃 を格納しない */
  210. #define M_ERROR_MESSAGE_ON        0x00400000L    /* エラーメッセージを表示 */
  211. #define M_ERROR_MESSAGE_OFF        0x00800000L    /* 〃を表示しない */
  212. #define M_RECOVERY_ON            0x08000000L /* 破損ヘッダの読み飛ばし */
  213.  
  214. #define EXTRACT_FOUND_FILE        0x40000000L    /* 検索されたファイルを解凍 */
  215. #define EXTRACT_NAMED_FILE        0x80000000L    /* 指定したファイルを解凍 */
  216. #endif /* EXTRACT_FOUND_FILE */
  217.  
  218. #if !defined(SFX_NOT)
  219. #define SFX_NOT                    0
  220. #define SFX_DOS_213S            1
  221. #define SFX_DOS_250S            2
  222. #define SFX_DOS_265S            3
  223. #define SFX_DOS_213L            51
  224. #define SFX_DOS_250L            52
  225. #define SFX_DOS_265L            53
  226. #define SFX_WIN16_213            1001
  227. #define SFX_WIN16_213_1            1001
  228. #define SFX_WIN16_213_2            1002
  229. #define SFX_WIN16_250_1            1011
  230. #define SFX_WIN32_213            2001
  231. #define SFX_WIN32_250            2011
  232. #define SFX_WIN32_250_1            2011
  233. #define SFX_WIN32_250_6            2012
  234. #define SFX_LZHSFX_1002            2051
  235. #define SFX_LZHSFX_1100            2052
  236. #define SFX_LZHAUTO_0002        2101
  237. #define SFX_LZHAUTO_1002        2102
  238. #define SFX_LZHAUTO_1100        2103
  239. #endif
  240.  
  241. HARC WINAPI CabOpenArchive(const HWND hwnd, LPCSTR pszArchive,
  242.                             const DWORD dwMode);
  243. int WINAPI CabCloseArchive(HARC harc);
  244. int WINAPI CabFindFirst(HARC harc, LPCSTR pszWildName,
  245.                             INDIVIDUALINFO *lpSubInfo);
  246. int WINAPI CabFindNext(HARC harc, INDIVIDUALINFO *lpSubInfo);
  247. int WINAPI CabGetArcFileName(HARC harc, LPSTR lpBuffer, const int nSize);
  248. DWORD WINAPI CabGetArcFileSize(HARC harc);
  249. DWORD WINAPI CabGetArcOriginalSize(HARC harc);
  250. DWORD WINAPI CabGetArcCompressedSize(HARC harc);
  251. WORD WINAPI CabGetArcRatio(HARC harc);
  252. WORD WINAPI CabGetArcDate(HARC harc);
  253. WORD WINAPI CabGetArcTime(HARC harc);
  254. UINT WINAPI CabGetArcOSType(HARC harc);
  255. int WINAPI CabIsSFXFile(HARC harc);
  256. int WINAPI CabGetFileName(HARC harc, LPSTR lpBuffer, const int nSize);
  257. int WINAPI CabGetMethod(HARC harc, LPSTR lpBuffer, const int nSize);
  258. DWORD WINAPI CabGetOriginalSize(HARC harc);
  259. DWORD WINAPI CabGetCompressedSize(HARC harc);
  260. WORD WINAPI CabGetRatio(HARC harc);
  261. WORD WINAPI CabGetDate(HARC harc);
  262. WORD WINAPI CabGetTime(HARC harc);
  263. DWORD WINAPI CabGetWriteTime(HARC harc);
  264. DWORD WINAPI CabGetAccessTime(HARC harc);
  265. DWORD WINAPI CabGetCreateTime(HARC harc);
  266. DWORD WINAPI CabGetCRC(HARC harc);
  267. int WINAPI CabGetAttribute(HARC harc);
  268. UINT WINAPI CabGetOSType(HARC harc);
  269.  
  270. /* ### CAB32.DLL 独自の API です。### */
  271. BOOL WINAPI CabGetCabinetInfo(LPCSTR pszCab, void* pv);
  272. BOOL WINAPI CabGetNextCabinet(HARC harc, LPSTR pszNextCab, int nMaxLen);
  273. BOOL WINAPI CabFdi(HWND hwnd, LPSTR pszCab, LPSTR pszPath, LPSTR pszFiles, DWORD dwFlags);
  274. DWORD WINAPI CabGetUncompressedTotalSize(LPCSTR pszCab);
  275. BOOL WINAPI CabGetCabinetFromSfx(LPCSTR pszSfx, LPCSTR pszPath);
  276.  
  277. #ifdef __cplusplus
  278. }
  279. #endif
  280.  
  281. #ifndef FA_RDONLY
  282. /* Attribute */
  283. #define FA_RDONLY       0x01            /* 書き込み保護属性 */
  284. #define FA_HIDDEN       0x02            /* 隠し属性 */
  285. #define FA_SYSTEM       0x04            /* システム属性 */
  286. #define FA_LABEL        0x08            /* ボリューム・ラベル */
  287. #define FA_DIREC        0x10            /* ディレクトリ */
  288. #define FA_ARCH         0x20            /* アーカイブ属性 */
  289. #endif
  290.  
  291. #ifndef ERROR_ARC_FILE_OPEN
  292. /* WARNING */
  293. #define ERROR_DISK_SPACE        0x8005
  294. #define ERROR_READ_ONLY            0x8006
  295. #define ERROR_USER_SKIP            0x8007
  296. #define ERROR_UNKNOWN_TYPE        0x8008
  297. #define ERROR_METHOD            0x8009
  298. #define ERROR_PASSWORD_FILE        0x800A
  299. #define ERROR_VERSION            0x800B
  300. #define ERROR_FILE_CRC            0x800C
  301. #define ERROR_FILE_OPEN            0x800D
  302. #define ERROR_MORE_FRESH        0x800E
  303. #define ERROR_NOT_EXIST            0x800F
  304. #define ERROR_ALREADY_EXIST        0x8010
  305.  
  306. #define ERROR_TOO_MANY_FILES    0x8011
  307.  
  308. /* ERROR */
  309. #define ERROR_MAKEDIRECTORY        0x8012
  310. #define ERROR_CANNOT_WRITE        0x8013
  311. #define ERROR_HUFFMAN_CODE        0x8014
  312. #define ERROR_COMMENT_HEADER    0x8015
  313. #define ERROR_HEADER_CRC        0x8016
  314. #define ERROR_HEADER_BROKEN        0x8017
  315. #define ERROR_ARC_FILE_OPEN        0x8018
  316. #define ERROR_NOT_ARC_FILE        0x8019
  317. #define ERROR_CANNOT_READ        0x801A
  318. #define ERROR_FILE_STYLE        0x801B
  319. #define ERROR_COMMAND_NAME        0x801C
  320. #define ERROR_MORE_HEAP_MEMORY    0x801D
  321. #define ERROR_ENOUGH_MEMORY        0x801E
  322. #if !defined(ERROR_ALREADY_RUNNING)
  323. #define ERROR_ALREADY_RUNNING    0x801F
  324. #endif
  325. #define ERROR_USER_CANCEL        0x8020
  326. #define ERROR_HARC_ISNOT_OPENED    0x8021
  327. #define ERROR_NOT_SEARCH_MODE    0x8022
  328. #define ERROR_NOT_SUPPORT        0x8023
  329. #define ERROR_TIME_STAMP        0x8024
  330. #define ERROR_TMP_OPEN            0x8025
  331. #define ERROR_LONG_FILE_NAME    0x8026
  332. #define ERROR_ARC_READ_ONLY        0x8027
  333. #define ERROR_SAME_NAME_FILE    0x8028
  334. #define ERROR_NOT_FIND_ARC_FILE 0x8029
  335. #define ERROR_RESPONSE_READ        0x802A
  336. #define ERROR_NOT_FILENAME        0x802B
  337. #define ERROR_TMP_COPY            0x802C
  338.  
  339. #define ERROR_END    ERROR_TMP_COPY
  340. #endif /* ERROR_ARC_FILE_OPEN */
  341.  
  342.  
  343. #endif    // CABAPI_H
  344.