home *** CD-ROM | disk | FTP | other *** search
/ DOS/V Power Report 1998 April / VPR9804B.ISO / DRIVER / melco / Mw95s_95 / MW95S_95.EXE / UNLHA32.H < prev    next >
C/C++ Source or Header  |  1997-06-30  |  13KB  |  362 lines

  1. /* UNLHA32.H, Micco, Jun.30,1997
  2. **
  3. ** LH 2.02a
  4. ** Copyright (c) 1988-90 by Haruyasu Yoshizaki  All rights reserved.
  5. **
  6. ** Win/WinNT-SFX
  7. ** Copyright (c) 1995-96 by mH        All rights reserved.
  8. **
  9. ** UNLHA32.DLL
  10. ** Copyright (c) 1995-97 by Micco     All rights reserved.
  11. */
  12.  
  13.  
  14. #if !defined(UNLHA32_H)
  15. #define UNLHA32_H
  16.  
  17. #define UNLHA32_VERSION    87
  18.  
  19. #ifndef FNAME_MAX32
  20. #define FNAME_MAX32        512
  21. #endif
  22.  
  23. #if defined(__BORLANDC__)
  24. #pragma option -a-
  25. #else
  26. #pragma pack(1)
  27. #endif
  28.  
  29. #ifndef ARC_DECSTRACT
  30. #define ARC_DECSTRACT
  31. typedef    HGLOBAL    HARC;
  32.  
  33. typedef struct {
  34.     DWORD             dwOriginalSize;        /* ファイルのサイズ */
  35.      DWORD             dwCompressedSize;    /* 圧縮後のサイズ */
  36.     DWORD            dwCRC;                /* 格納ファイルのチェックサム */
  37.     UINT            uFlag;                /* 処理結果 */
  38.     UINT            uOSType;            /* 書庫作成に使われたOS */
  39.     WORD            wRatio;                /* 圧縮率 */
  40.     WORD            wDate;                /* 格納ファイルの日付(DOS 形式) */
  41.     WORD             wTime;                /* 格納ファイルの時刻(〃) */
  42.     char            szFileName[FNAME_MAX32 + 1];    /* 書庫名 */
  43.     char            dummy1[3];
  44.     char            szAttribute[8];        /* 格納ファイルの属性(書庫固有) */
  45.     char            szMode[8];            /* 格納ファイルの格納モード(〃) */
  46. }    INDIVIDUALINFO, *LPINDIVIDUALINFO;
  47.  
  48. typedef struct {
  49.     DWORD             dwFileSize;        /* 格納ファイルのサイズ */
  50.     DWORD            dwWriteSize;    /* 書き込みサイズ */
  51.     char            szSourceFileName[FNAME_MAX32 + 1];    /* 格納ファイル名 */
  52.     char            dummy1[3];
  53.     char            szDestFileName[FNAME_MAX32 + 1];
  54.                                     /* 解凍先または圧縮元パス名 */
  55.     char            dummy[3];
  56. }    EXTRACTINGINFO, *LPEXTRACTINGINFO;
  57.  
  58. typedef struct {
  59.     EXTRACTINGINFO exinfo;
  60.     DWORD dwCompressedSize;
  61.     DWORD dwCRC;
  62.     UINT  uOSType;
  63.     WORD  wRatio;
  64.     WORD  wDate;
  65.     WORD  wTime;
  66.     char  szAttribute[8];
  67.     char  szMode[8];
  68. } EXTRACTINGINFOEX, *LPEXTRACTINGINFOEX;
  69.  
  70. #endif
  71.  
  72. typedef struct {
  73.     UINT            uTotalFiles;
  74.     UINT            uCountInfoFiles;
  75.     UINT            uErrorCount;
  76.     LONG            lDiskSpace;
  77.     HGLOBAL            hSubInfo;
  78. }    LHALOCALINFO;
  79.  
  80. #if !defined(__BORLANDC__)
  81. #pragma pack()
  82. #else
  83. #pragma option -a.
  84. #endif
  85.  
  86. #if !defined(__BORLANDC__)
  87. #define    _export
  88. #endif
  89.  
  90. #ifdef __cplusplus
  91. extern "C" {
  92. #endif
  93.  
  94. /* ### LHA.DLL Ver 1.1 と互換性のある API です。### */
  95. WORD WINAPI _export UnlhaGetVersion(VOID);
  96.  
  97. BOOL WINAPI _export UnlhaGetRunning(VOID);
  98.  
  99. BOOL WINAPI _export UnlhaGetBackGroundMode(VOID);
  100. BOOL WINAPI _export UnlhaSetBackGroundMode(const BOOL _BackGroundMode);
  101. BOOL WINAPI _export UnlhaGetCursorMode(VOID);
  102. BOOL WINAPI _export UnlhaSetCursorMode(const BOOL _CursorMode);
  103. WORD WINAPI _export UnlhaGetCursorInterval(VOID);
  104. BOOL WINAPI _export UnlhaSetCursorInterval(const WORD _Interval);
  105.  
  106. int WINAPI _export Unlha(const HWND _hwnd, LPCSTR _szCmdLine,
  107.                         LPSTR _szOutput, const DWORD _dwSize);
  108.  
  109. /* ###『統合アーカイバ API』共通の API です。### */
  110. #if !defined(CHECKARCHIVE_RAPID)
  111. #define    CHECKARCHIVE_RAPID        0    /* 簡易(最初の3ヘッダまで) */
  112. #define    CHECKARCHIVE_BASIC        1    /* 標準(全てのヘッダ) */
  113. #define    CHECKARCHIVE_FULLCRC    2    /* 完全(格納ファイルの CRC チェック) */
  114.  
  115.     /* 以下のフラグは上記と組み合わせて使用。*/
  116. #define CHECKARCHIVE_RECOVERY    4   /* 破損ヘッダを読み飛ばして処理 */
  117. #define CHECKARCHIVE_SFX        8    /* SFX かどうかを返す */
  118. #define CHECKARCHIVE_ALL        16    /* ファイルの最後まで検索する */
  119. #endif
  120.  
  121. BOOL WINAPI _export UnlhaCheckArchive(LPCSTR _szFileName, const int _iMode);
  122.  
  123. int WINAPI _export UnlhaGetFileCount(LPCSTR _szArcFile);
  124.  
  125. #if !defined(UNPACK_CONFIG_MODE)
  126. #define    UNPACK_CONFIG_MODE        1    /* 解凍系の設定 */
  127. #define PACK_CONFIG_MODE        2    /* 圧縮系の設定 */
  128. #endif
  129.  
  130. BOOL WINAPI _export UnlhaConfigDialog(const HWND _hwnd, LPSTR _lpszComBuffer,
  131.                         const int _iMode);
  132.  
  133. #if !defined(ISARC_FUNCTION_START)
  134. #define ISARC_FUNCTION_START            0
  135. #define ISARC                            0    /* Unlha */
  136. #define ISARC_GET_VERSION                1    /* UnlhaGetVersion */
  137. #define ISARC_GET_CURSOR_INTERVAL        2    /* UnlhaGetCursorInterval */
  138. #define ISARC_SET_CURSOR_INTERVAL        3    /* UnlhaSetCursorInterval */
  139. #define ISARC_GET_BACK_GROUND_MODE        4    /* UnlhaGetBackGroundMode */
  140. #define ISARC_SET_BACK_GROUND_MODE        5    /* UnlhaSetBackGroundMode */
  141. #define ISARC_GET_CURSOR_MODE            6    /* UnlhaGetCursorMode */
  142. #define ISARC_SET_CURSOR_MODE            7    /* UnlhaSetCursorMode */
  143. #define ISARC_GET_RUNNING                8    /* UnlhaGetRunning */
  144.  
  145. #define ISARC_CHECK_ARCHIVE                16    /* UnlhaCheckArchive */
  146. #define ISARC_CONFIG_DIALOG                17    /* UnlhaConfigDialog */
  147. #define ISARC_GET_FILE_COUNT            18    /* UnlhaGetFileCount */
  148. #define ISARC_QUERY_FUNCTION_LIST        19    /* UnlhaQueryFunctionList */
  149. #define ISARC_HOUT                        20    /* (UnlhaHOut) */
  150. #define ISARC_STRUCTOUT                    21    /* (UnlhaStructOut) */
  151. #define ISARC_GET_ARC_FILE_INFO            22    /* UnlhaGetArcFileInfo */
  152.  
  153. #define ISARC_OPEN_ARCHIVE                23    /* UnlhaOpenArchive */
  154. #define ISARC_CLOSE_ARCHIVE                24    /* UnlhaCloseArchive */
  155. #define ISARC_FIND_FIRST                25    /* UnlhaFindFirst */
  156. #define ISARC_FIND_NEXT                    26    /* UnlhaFindNext */
  157. #define ISARC_EXTRACT                    27    /* (UnlhaExtract) */
  158. #define ISARC_ADD                        28    /* (UnlhaAdd) */
  159. #define ISARC_MOVE                        29    /* (UnlhaMove) */
  160. #define ISARC_DELETE                    30    /* (UnlhaDelete) */
  161.  
  162. #define ISARC_GET_ARC_FILE_NAME            40    /* UnlhaGetArcFileName */
  163. #define ISARC_GET_ARC_FILE_SIZE            41    /* UnlhaGetArcFileSize */
  164. #define ISARC_GET_ARC_ORIGINAL_SIZE        42    /* UnlhaArcOriginalSize */
  165. #define ISARC_GET_ARC_COMPRESSED_SIZE    43    /* UnlhaGetArcCompressedSize */
  166. #define ISARC_GET_ARC_RATIO                44    /* UnlhaGetArcRatio */
  167. #define ISARC_GET_ARC_DATE                45    /* UnlhaGetArcDate */
  168. #define ISARC_GET_ARC_TIME                46    /* UnlhaGetArcTime */
  169. #define ISARC_GET_ARC_OS_TYPE            47    /* UnlhaGetArcOSType */
  170. #define ISARC_GET_ARC_IS_SFX_FILE        48    /* UnlhaGetArcIsSFXFile */
  171. #define ISARC_GET_FILE_NAME                57    /* UnlhaGetFileName */
  172. #define ISARC_GET_ORIGINAL_SIZE            58    /* UnlhaGetOriginalSize */
  173. #define ISARC_GET_COMPRESSED_SIZE        59    /* UnlhaGetCompressedSize */
  174. #define ISARC_GET_RATIO                    60    /* UnlhaGetRatio */
  175. #define ISARC_GET_DATE                    61    /* UnlhaGetDate */
  176. #define ISARC_GET_TIME                    62    /* UnlhaGetTime */
  177. #define ISARC_GET_CRC                    63    /* UnlhaGetCRC */
  178. #define ISARC_GET_ATTRIBUTE                64    /* UnlhaGetAttribute */
  179. #define ISARC_GET_OS_TYPE                65    /* UnlhaGetOSType */
  180. #define ISARC_GET_METHOD                66    /* UnlhaGetMethod */
  181. #define ISARC_GET_WRITE_TIME            67    /* UnlhaGetWriteTime */
  182. #define ISARC_GET_CREATE_TIME            68    /* UnlhaGetCreateTime */
  183. #define ISARC_GET_ACCESS_TIME            69    /* UnlhaGetAccessTime */
  184.  
  185. #define ISARC_FUNCTION_END                69
  186. #endif    /* ISARC_FUNCTION_START */
  187.  
  188. BOOL WINAPI _export UnlhaQueryFunctionList(const int _iFunction);
  189.  
  190. #ifndef WM_ARCEXTRACT
  191. #define    WM_ARCEXTRACT    "wm_arcextract"
  192.  
  193. #define    ARCEXTRACT_BEGIN        0    /* 該当ファイルの処理の開始 */
  194. #define    ARCEXTRACT_INPROCESS    1    /* 該当ファイルの展開中 */
  195. #define    ARCEXTRACT_END            2    /* 処理終了、関連メモリを開放 */
  196. #define ARCEXTRACT_OPEN            3    /* 該当書庫の処理の開始 */
  197. #define ARCEXTRACT_COPY            4    /* ワークファイルの書き戻し */
  198.  
  199. WINAPI _export UnlhaSetOwnerWindow(const HWND _hwnd);
  200. BOOL WINAPI _export UnlhaClearOwnerWindow(VOID);
  201.  
  202. typedef BOOL CALLBACK ARCHIVERPROC(HWND _hwnd, UINT _uMsg,
  203.                         UINT _nState, LPEXTRACTINGINFOEX _lpEis);
  204. typedef ARCHIVERPROC *LPARCHIVERPROC;
  205.  
  206. BOOL WINAPI _export UnlhaSetOwnerWindowEx(HWND _hwnd,
  207.         LPARCHIVERPROC _lpArcProc);
  208. BOOL WINAPI _export UnlhaKillOwnerWindowEx(HWND _hwnd);
  209. #endif
  210.  
  211. /* OpenArchive 系 API です。 */
  212.  
  213. #if !defined(EXTRACT_FOUND_FILE)
  214. /* MODE (for UnarjOpenArchive) */
  215. #define M_INIT_FILE_USE            0x00000001L    /* レジストリの設定を使用 */
  216. #define M_REGARDLESS_INIT_FILE    0x00000002L    /* 〃 を使用しない */
  217. #define M_CHECK_ALL_PATH        0x00000100L    /* 厳格なファイル名サーチ */
  218. #define M_CHECK_FILENAME_ONLY    0x00000200L    /* 〃を行わない */
  219. #define M_USE_DRIVE_LETTER        0x00001000L    /* ドライブ名から格納 */
  220. #define M_NOT_USE_DRIVE_LETTER    0x00002000L    /* 〃 を格納しない */
  221. #define M_ERROR_MESSAGE_ON        0x00400000L    /* エラーメッセージを表示 */
  222. #define M_ERROR_MESSAGE_OFF        0x00800000L    /* 〃を表示しない */
  223. #define M_RECOVERY_ON            0x08000000L /* 破損ヘッダの読み飛ばし */
  224.  
  225. #define EXTRACT_FOUND_FILE        0x40000000L    /* 検索されたファイルを解凍 */
  226. #define EXTRACT_NAMED_FILE        0x80000000L    /* 指定したファイルを解凍 */
  227. #endif /* EXTRACT_FOUND_FILE */
  228.  
  229. #if !defined(SFX_NOT)
  230. #define SFX_NOT                    0
  231. #define SFX_DOS_213S            1
  232. #define SFX_DOS_250S            2
  233. #define SFX_DOS_265S            3
  234. #define SFX_DOS_213L            51
  235. #define SFX_DOS_250L            52
  236. #define SFX_DOS_265L            53
  237. #define SFX_WIN16_213            1001
  238. #define SFX_WIN16_213_1            1001
  239. #define SFX_WIN16_213_2            1002
  240. #define SFX_WIN16_250_1            1011
  241. #define SFX_WIN32_213            2001
  242. #define SFX_WIN32_250            2011
  243. #define SFX_WIN32_250_1            2011
  244. #define SFX_WIN32_250_6            2012
  245. #define SFX_LZHSFX_1002            2051
  246. #define SFX_LZHSFX_1100            2052
  247. #define SFX_LZHAUTO_0002        2101
  248. #define SFX_LZHAUTO_1002        2102
  249. #define SFX_LZHAUTO_1100        2103
  250. #endif
  251.  
  252. HARC WINAPI _export UnlhaOpenArchive(const HWND _hwnd, LPCSTR _szFileName,
  253.                             const DWORD _dwMode);
  254. int WINAPI _export UnlhaCloseArchive(HARC _harc);
  255. int WINAPI _export UnlhaFindFirst(HARC _harc, LPCSTR _szWildName,
  256.                             INDIVIDUALINFO *_lpSubInfo);
  257. int WINAPI _export UnlhaFindNext(HARC _harc, INDIVIDUALINFO *_lpSubInfo);
  258. int WINAPI _export UnlhaGetArcFileName(HARC _harc, LPSTR _lpBuffer,
  259.                             const int _nSize);
  260. DWORD WINAPI _export UnlhaGetArcFileSize(HARC _harc);
  261. DWORD WINAPI _export UnlhaGetArcOriginalSize(HARC _harc);
  262. DWORD WINAPI _export UnlhaGetArcCompressedSize(HARC _harc);
  263. WORD WINAPI _export UnlhaGetArcRatio(HARC _harc);
  264. WORD WINAPI _export UnlhaGetArcDate(HARC _harc);
  265. WORD WINAPI _export UnlhaGetArcTime(HARC _harc);
  266. UINT WINAPI _export UnlhaGetArcOSType(HARC _harc);
  267. int WINAPI _export UnlhaIsSFXFile(HARC _harc);
  268. int WINAPI _export UnlhaGetFileName(HARC _harc, LPSTR _lpBuffer,
  269.                             const int _nSize);
  270. int WINAPI _export UnlhaGetMethod(HARC _harc, LPSTR _lpBuffer,
  271.                             const int _nSize);
  272. DWORD WINAPI _export UnlhaGetOriginalSize(HARC _harc);
  273. DWORD WINAPI _export UnlhaGetCompressedSize(HARC _harc);
  274. WORD WINAPI _export UnlhaGetRatio(HARC _harc);
  275. WORD WINAPI _export UnlhaGetDate(HARC _harc);
  276. WORD WINAPI _export UnlhaGetTime(HARC _harc);
  277. DWORD WINAPI _export UnlhaGetWriteTime(HARC _harc);
  278. DWORD WINAPI _export UnlhaGetAccessTime(HARC _harc);
  279. DWORD WINAPI _export UnlhaGetCreateTime(HARC _harc);
  280. DWORD WINAPI _export UnlhaGetCRC(HARC _harc);
  281. int WINAPI _export UnlhaGetAttribute(HARC _harc);
  282. UINT WINAPI _export UnlhaGetOSType(HARC _harc);
  283.  
  284. #ifndef FA_RDONLY
  285. /* Attribute */
  286. #define FA_RDONLY       0x01            /* 書き込み保護属性 */
  287. #define FA_HIDDEN       0x02            /* 隠し属性 */
  288. #define FA_SYSTEM       0x04            /* システム属性 */
  289. #define FA_LABEL        0x08            /* ボリューム・ラベル */
  290. #define FA_DIREC        0x10            /* ディレクトリ */
  291. #define FA_ARCH         0x20            /* アーカイブ属性 */
  292. #endif
  293.  
  294. #ifndef ERROR_ARC_FILE_OPEN
  295. /* WARNING */
  296. #define ERROR_DISK_SPACE        0x8005
  297. #define ERROR_READ_ONLY            0x8006
  298. #define ERROR_USER_SKIP            0x8007
  299. #define ERROR_UNKNOWN_TYPE        0x8008
  300. #define ERROR_METHOD            0x8009
  301. #define ERROR_PASSWORD_FILE        0x800A
  302. #define ERROR_VERSION            0x800B
  303. #define ERROR_FILE_CRC            0x800C
  304. #define ERROR_FILE_OPEN            0x800D
  305. #define ERROR_MORE_FRESH        0x800E
  306. #define ERROR_NOT_EXIST            0x800F
  307. #define ERROR_ALREADY_EXIST        0x8010
  308.  
  309. #define ERROR_TOO_MANY_FILES    0x8011
  310.  
  311. /* ERROR */
  312. #define ERROR_MAKEDIRECTORY        0x8012
  313. #define ERROR_CANNOT_WRITE        0x8013
  314. #define ERROR_HUFFMAN_CODE        0x8014
  315. #define ERROR_COMMENT_HEADER    0x8015
  316. #define ERROR_HEADER_CRC        0x8016
  317. #define ERROR_HEADER_BROKEN        0x8017
  318. #define ERROR_ARC_FILE_OPEN        0x8018
  319. #define ERROR_NOT_ARC_FILE        0x8019
  320. #define ERROR_CANNOT_READ        0x801A
  321. #define ERROR_FILE_STYLE        0x801B
  322. #define ERROR_COMMAND_NAME        0x801C
  323. #define ERROR_MORE_HEAP_MEMORY    0x801D
  324. #define ERROR_ENOUGH_MEMORY        0x801E
  325. #if !defined(ERROR_ALREADY_RUNNING)
  326. #define ERROR_ALREADY_RUNNING    0x801F
  327. #endif
  328. #define ERROR_USER_CANCEL        0x8020
  329. #define ERROR_HARC_ISNOT_OPENED    0x8021
  330. #define ERROR_NOT_SEARCH_MODE    0x8022
  331. #define ERROR_NOT_SUPPORT        0x8023
  332. #define ERROR_TIME_STAMP        0x8024
  333. #define ERROR_TMP_OPEN            0x8025
  334. #define ERROR_LONG_FILE_NAME    0x8026
  335. #define ERROR_ARC_READ_ONLY        0x8027
  336. #define ERROR_SAME_NAME_FILE    0x8028
  337. #define ERROR_NOT_FIND_ARC_FILE 0x8029
  338. #define ERROR_RESPONSE_READ        0x802A
  339. #define ERROR_NOT_FILENAME        0x802B
  340. #define ERROR_TMP_COPY            0x802C
  341. #define ERROR_EOF                0x802D
  342.  
  343. #define ERROR_END    ERROR_EOF
  344. #endif /* ERROR_ARC_FILE_OPEN */
  345.  
  346. /* ### UNLHA32.DLL 独自の API です。### */
  347. WORD WINAPI _export UnlhaGetSubVersion(VOID);
  348.  
  349. int WINAPI _export UnlhaExtractMem(const HWND _hwndParent,
  350.         LPCSTR _szCmdLine, LPBYTE _lpBuffer, const DWORD _dwSize,
  351.         time_t *_lpTime, LPWORD _lpwAttr, LPDWORD _lpdwWriteSize);
  352. int WINAPI _export UnlhaCompressMem(const HWND _hwndParent,
  353.         LPCSTR _szCmdLine, const LPBYTE _lpBuffer, const DWORD _dwSize,
  354.         const time_t *_lpTime, const LPWORD _lpwAttr,
  355.         LPDWORD _lpdwWriteSize);
  356.  
  357. #ifdef __cplusplus
  358. }
  359. #endif
  360.  
  361. #endif    /* UNLHA32_H */
  362.