155 lines
4.1 KiB
ObjectPascal
155 lines
4.1 KiB
ObjectPascal
// Virtual Pascal interface unit for UnRAR.dll
|
|
//
|
|
// Ported to Virtual Pascal by Alexey Fayans, fidonet: 2:5030/1997, e-mail: shad@shad.pp.ru
|
|
|
|
{$IFDEF Open32}
|
|
{&cdecl+}
|
|
{$ELSE}
|
|
{&StdCall+}
|
|
{$ENDIF Open32}
|
|
{&AlignRec+,SmartLink+,OrgName+,X+,Z+,Use32-}
|
|
|
|
unit UnRAR;
|
|
|
|
interface
|
|
|
|
uses
|
|
Windows;
|
|
|
|
const
|
|
ERAR_END_ARCHIVE = 10;
|
|
ERAR_NO_MEMORY = 11;
|
|
ERAR_BAD_DATA = 12;
|
|
ERAR_BAD_ARCHIVE = 13;
|
|
ERAR_UNKNOWN_FORMAT = 14;
|
|
ERAR_EOPEN = 15;
|
|
ERAR_ECREATE = 16;
|
|
ERAR_ECLOSE = 17;
|
|
ERAR_EREAD = 18;
|
|
ERAR_EWRITE = 19;
|
|
ERAR_SMALL_BUF = 20;
|
|
ERAR_UNKNOWN = 21;
|
|
|
|
RAR_OM_LIST = 0;
|
|
RAR_OM_EXTRACT = 1;
|
|
|
|
RAR_SKIP = 0;
|
|
RAR_TEST = 1;
|
|
RAR_EXTRACT = 2;
|
|
|
|
RAR_VOL_ASK = 0;
|
|
RAR_VOL_NOTIFY = 1;
|
|
|
|
RAR_DLL_VERSION = 3;
|
|
|
|
UCM_CHANGEVOLUME = 0;
|
|
UCM_PROCESSDATA = 1;
|
|
UCM_NEEDPASSWORD = 2;
|
|
|
|
type
|
|
PRARHeaderData = ^TRARHeaderData;
|
|
TRARHeaderData = packed record
|
|
ArcName: packed array[0..259] of Char;
|
|
FileName: packed array[0..259] of Char;
|
|
Flags: UInt;
|
|
PackSize: UInt;
|
|
UnpSize: UInt;
|
|
HostOS: UInt;
|
|
FileCRC: UInt;
|
|
FileTime: UInt;
|
|
UnpVer: UInt;
|
|
Method: UInt;
|
|
FileAttr: UInt;
|
|
CmtBuf: PChar;
|
|
CmtBufSize: UInt;
|
|
CmtSize: UInt;
|
|
CmtState: UInt;
|
|
end;
|
|
|
|
PRARHeaderDataEx = ^TRARHeaderDataEx;
|
|
TRARHeaderDataEx = packed record
|
|
ArcName: packed array [0..1023] of Char;
|
|
ArcNameW: packed array [0..2047] of Char;
|
|
FileName: packed array [0..1023] of Char;
|
|
FileNameW: packed array [0..2047] of Char;
|
|
Flags: UInt;
|
|
PackSize: UInt;
|
|
PackSizeHigh: UInt;
|
|
UnpSize: UInt;
|
|
UnpSizeHigh: UInt;
|
|
HostOS: UInt;
|
|
FileCRC: UInt;
|
|
FileTime: UInt;
|
|
UnpVer: UInt;
|
|
Method: UInt;
|
|
FileAttr: UInt;
|
|
CmtBuf: PChar;
|
|
CmtBufSize: UInt;
|
|
CmtSize: UInt;
|
|
CmtState: UInt;
|
|
Reserved: packed array [0..1023] of UInt;
|
|
end;
|
|
|
|
PRAROpenArchiveData = ^TRAROpenArchiveData;
|
|
TRAROpenArchiveData = packed record
|
|
ArcName: PChar;
|
|
OpenMode: UInt;
|
|
OpenResult: UInt;
|
|
CmtBuf: PChar;
|
|
CmtBufSize: UInt;
|
|
CmtSize: UInt;
|
|
CmtState: UInt;
|
|
end;
|
|
|
|
PRAROpenArchiveDataEx = ^TRAROpenArchiveDataEx;
|
|
TRAROpenArchiveDataEx = packed record
|
|
ArcName: PChar;
|
|
ArcNameW: PWideChar;
|
|
OpenMode: UInt;
|
|
OpenResult: UInt;
|
|
CmtBuf: PChar;
|
|
CmtBufSize: UInt;
|
|
CmtSize: UInt;
|
|
CmtState: UInt;
|
|
Flags: UInt;
|
|
Reserved: packed array [0..31] of UInt;
|
|
end;
|
|
|
|
TUnrarCallback = function(Msg: UInt; UserData, P1, P2: Longint): Int;
|
|
|
|
function RAROpenArchive(ArchiveData: PRAROpenArchiveData): THandle;
|
|
function RAROpenArchiveEx(ArchiveData: PRAROpenArchiveDataEx): THandle;
|
|
function RARCloseArchive(hArcData: THandle): Int;
|
|
function RARReadHeader(hArcData: THandle; HeaderData: PRARHeaderData): Int;
|
|
function RARReadHeaderEx(hArcData: THandle; HeaderData: PRARHeaderDataEx): Int;
|
|
function RARProcessFile(hArcData: THandle; Operation: Int; DestPath, DestName: PChar): Int;
|
|
function RARProcessFileW(hArcData: THandle; Operation: Int; DestPath, DestName: PWideChar): Int;
|
|
procedure RARSetCallback(hArcData: THandle; UnrarCallback: TUnrarCallback; UserData: Longint);
|
|
procedure RARSetPassword(hArcData: THandle; Password: PChar);
|
|
|
|
// obsolete functions
|
|
type
|
|
TChangeVolProc = function(ArcName: PChar; Mode: Int): Int;
|
|
TProcessDataProc = function(Addr: PUChar; Size: Int): Int;
|
|
|
|
procedure RARSetChangeVolProc(hArcData: THandle; ChangeVolProc: TChangeVolProc);
|
|
procedure RARSetProcessDataProc(hArcData: THandle; ProcessDataProc: TProcessDataProc);
|
|
|
|
implementation
|
|
|
|
{$L UnRAR.LIB}
|
|
|
|
function RAROpenArchive; external;
|
|
function RAROpenArchiveEx; external;
|
|
function RARCloseArchive; external;
|
|
function RARReadHeader; external;
|
|
function RARReadHeaderEx; external;
|
|
function RARProcessFile; external;
|
|
function RARProcessFileW; external;
|
|
procedure RARSetCallback; external;
|
|
procedure RARSetPassword; external;
|
|
procedure RARSetChangeVolProc; external;
|
|
procedure RARSetProcessDataProc; external;
|
|
|
|
end.
|