| #ifndef _UNRAR_DLL_ |
| #define _UNRAR_DLL_ |
| |
| #pragma pack(1) |
| |
| #define ERAR_SUCCESS 0 |
| #define ERAR_END_ARCHIVE 10 |
| #define ERAR_NO_MEMORY 11 |
| #define ERAR_BAD_DATA 12 |
| #define ERAR_BAD_ARCHIVE 13 |
| #define ERAR_UNKNOWN_FORMAT 14 |
| #define ERAR_EOPEN 15 |
| #define ERAR_ECREATE 16 |
| #define ERAR_ECLOSE 17 |
| #define ERAR_EREAD 18 |
| #define ERAR_EWRITE 19 |
| #define ERAR_SMALL_BUF 20 |
| #define ERAR_UNKNOWN 21 |
| #define ERAR_MISSING_PASSWORD 22 |
| #define ERAR_EREFERENCE 23 |
| #define ERAR_BAD_PASSWORD 24 |
| |
| #define RAR_OM_LIST 0 |
| #define RAR_OM_EXTRACT 1 |
| #define RAR_OM_LIST_INCSPLIT 2 |
| |
| #define RAR_SKIP 0 |
| #define RAR_TEST 1 |
| #define RAR_EXTRACT 2 |
| |
| #define RAR_VOL_ASK 0 |
| #define RAR_VOL_NOTIFY 1 |
| |
| #define RAR_DLL_VERSION 8 |
| |
| #define RAR_HASH_NONE 0 |
| #define RAR_HASH_CRC32 1 |
| #define RAR_HASH_BLAKE2 2 |
| |
| |
| #ifdef _UNIX |
| #define CALLBACK |
| #define PASCAL |
| #define LONG long |
| #define HANDLE void * |
| #define LPARAM long |
| #define UINT unsigned int |
| #endif |
| |
| #define RHDF_SPLITBEFORE 0x01 |
| #define RHDF_SPLITAFTER 0x02 |
| #define RHDF_ENCRYPTED 0x04 |
| #define RHDF_SOLID 0x10 |
| #define RHDF_DIRECTORY 0x20 |
| |
| |
| struct RARHeaderData |
| { |
| char ArcName[260]; |
| char FileName[260]; |
| unsigned int Flags; |
| unsigned int PackSize; |
| unsigned int UnpSize; |
| unsigned int HostOS; |
| unsigned int FileCRC; |
| unsigned int FileTime; |
| unsigned int UnpVer; |
| unsigned int Method; |
| unsigned int FileAttr; |
| char *CmtBuf; |
| unsigned int CmtBufSize; |
| unsigned int CmtSize; |
| unsigned int CmtState; |
| }; |
| |
| |
| struct RARHeaderDataEx |
| { |
| char ArcName[1024]; |
| wchar_t ArcNameW[1024]; |
| char FileName[1024]; |
| wchar_t FileNameW[1024]; |
| unsigned int Flags; |
| unsigned int PackSize; |
| unsigned int PackSizeHigh; |
| unsigned int UnpSize; |
| unsigned int UnpSizeHigh; |
| unsigned int HostOS; |
| unsigned int FileCRC; |
| unsigned int FileTime; |
| unsigned int UnpVer; |
| unsigned int Method; |
| unsigned int FileAttr; |
| char *CmtBuf; |
| unsigned int CmtBufSize; |
| unsigned int CmtSize; |
| unsigned int CmtState; |
| unsigned int DictSize; |
| unsigned int HashType; |
| char Hash[32]; |
| unsigned int RedirType; |
| wchar_t *RedirName; |
| unsigned int RedirNameSize; |
| unsigned int DirTarget; |
| unsigned int MtimeLow; |
| unsigned int MtimeHigh; |
| unsigned int CtimeLow; |
| unsigned int CtimeHigh; |
| unsigned int AtimeLow; |
| unsigned int AtimeHigh; |
| unsigned int Reserved[988]; |
| }; |
| |
| |
| struct RAROpenArchiveData |
| { |
| char *ArcName; |
| unsigned int OpenMode; |
| unsigned int OpenResult; |
| char *CmtBuf; |
| unsigned int CmtBufSize; |
| unsigned int CmtSize; |
| unsigned int CmtState; |
| }; |
| |
| typedef int (CALLBACK *UNRARCALLBACK)(UINT msg,LPARAM UserData,LPARAM P1,LPARAM P2); |
| |
| #define ROADF_VOLUME 0x0001 |
| #define ROADF_COMMENT 0x0002 |
| #define ROADF_LOCK 0x0004 |
| #define ROADF_SOLID 0x0008 |
| #define ROADF_NEWNUMBERING 0x0010 |
| #define ROADF_SIGNED 0x0020 |
| #define ROADF_RECOVERY 0x0040 |
| #define ROADF_ENCHEADERS 0x0080 |
| #define ROADF_FIRSTVOLUME 0x0100 |
| |
| struct RAROpenArchiveDataEx |
| { |
| char *ArcName; |
| wchar_t *ArcNameW; |
| unsigned int OpenMode; |
| unsigned int OpenResult; |
| char *CmtBuf; |
| unsigned int CmtBufSize; |
| unsigned int CmtSize; |
| unsigned int CmtState; |
| unsigned int Flags; |
| UNRARCALLBACK Callback; |
| LPARAM UserData; |
| unsigned int Reserved[28]; |
| }; |
| |
| enum UNRARCALLBACK_MESSAGES { |
| UCM_CHANGEVOLUME,UCM_PROCESSDATA,UCM_NEEDPASSWORD,UCM_CHANGEVOLUMEW, |
| UCM_NEEDPASSWORDW |
| }; |
| |
| typedef int (PASCAL *CHANGEVOLPROC)(char *ArcName,int Mode); |
| typedef int (PASCAL *PROCESSDATAPROC)(unsigned char *Addr,int Size); |
| |
| #ifdef __cplusplus |
| extern "C" { |
| #endif |
| |
| HANDLE PASCAL RAROpenArchive(struct RAROpenArchiveData *ArchiveData); |
| HANDLE PASCAL RAROpenArchiveEx(struct RAROpenArchiveDataEx *ArchiveData); |
| int PASCAL RARCloseArchive(HANDLE hArcData); |
| int PASCAL RARReadHeader(HANDLE hArcData,struct RARHeaderData *HeaderData); |
| int PASCAL RARReadHeaderEx(HANDLE hArcData,struct RARHeaderDataEx *HeaderData); |
| int PASCAL RARProcessFile(HANDLE hArcData,int Operation,char *DestPath,char *DestName); |
| int PASCAL RARProcessFileW(HANDLE hArcData,int Operation,wchar_t *DestPath,wchar_t *DestName); |
| void PASCAL RARSetCallback(HANDLE hArcData,UNRARCALLBACK Callback,LPARAM UserData); |
| void PASCAL RARSetChangeVolProc(HANDLE hArcData,CHANGEVOLPROC ChangeVolProc); |
| void PASCAL RARSetProcessDataProc(HANDLE hArcData,PROCESSDATAPROC ProcessDataProc); |
| void PASCAL RARSetPassword(HANDLE hArcData,char *Password); |
| int PASCAL RARGetDllVersion(); |
| |
| #ifdef __cplusplus |
| } |
| #endif |
| |
| #pragma pack() |
| |
| #endif |