Delphi用のヘッダーファイル |
Top Previous Next |
unit pylACXHead;
{ ACX plugin interface for oMega Commander. Interface version: 3.0 Pylonos.com LLC (c) https://pylonos.com }
interface
const
{ Version of the plugin interface } PlugACXVers_Major = 3; PlugACXVers_Minor = 0;
PlugWCXVers_Major = 2; PlugWCXVers_Minor = 21;
{ The error codes are returned to the calling application } E_SUCCESS = 0; // Successful execution E_END_ARCHIVE = 10; // No more files in archive (archive end) E_NO_MEMORY = 11; // Not enough memory E_BAD_DATA = 12; // Data error E_BAD_ARCHIVE = 13; // CRC error in archive data E_UNKNOWN_FORMAT = 14; // Invalid archive format E_EOPEN = 15; // Impossible to open existing file E_ECREATE = 16; // Impossible to create a file E_ECLOSE = 17; // Error closing the file E_EREAD = 18; // Error reading file E_EWRITE = 19; // Error writing file E_SMALL_BUF = 20; // Buffer is too small E_EABORTED = 21; // Operation was interrupted by the user E_NO_FILES = 22; // Files not found E_TOO_MANY_FILES = 23; // Too many files to archive E_NOT_SUPPORTED = 24; // Not supported operation
E_EX_UNKNOWN_ERR = 201; // Unknown error E_EX_ENCRYPTED = 202; // File/archive is encrypted and be processed (decryption isn't supported) E_EX_FILE_TOO_BIG = 203; // File is too big E_EX_FILE_IN_USE = 204; // File is locked/in use and can't be processed E_EX_NOT_SUPPORTED_METHOD = 205; // Archive method isn't supported E_EX_SKIP = 206; // File was skipped E_EX_MAYBE_DISKFULL = 207; // Maybe disk full
{ Open archive flags } PK_OM_LIST = 0; // View archive content PK_OM_EXTRACT = 1; // Unpack archive
{ Flags for ProcessFileW, ProcessFile } PK_SKIP = 0; // Skip file (without unpacking) PK_TEST = 1; // Test integrity of the file PK_EXTRACT = 2; // Unpack the file to disk
{ Flags for tChangeVolProcW, tChangeVolProc } PK_VOL_ASK = 0; // Ask the user about location of the next volume PK_VOL_NOTIFY = 1; // Notify the application, that the next volume can be unpackd
{ Flags for PackFiles, PackFilesW } PK_PACK_MOVE_FILES = 1; // Delete the input file after archiving PK_PACK_SAVE_PATHS = 2; // Save file paths PK_PACK_ENCRYPT = 4; // Request file password during encryption
{ Flags for ArcPackFilesW } PK_PACKEX_MOVE_FILES = 1; PK_PACKEX_SAVE_PATHS = 2; PK_PACKEX_ENCRYPT = 4; PK_PACKEX_ENCRYPTLIST = 8; PK_PACKEX_SOLID = 16;
{ Flags of the tArcPlugInitData.out_PackerCaps, GetPackCaps } PK_CAPS_NEW = 1; // Can create new archives PK_CAPS_MODIFY = 2; // Can change existing archives PK_CAPS_MULTIPLE = 4; // Archive can contain multiple files PK_CAPS_DELETE = 8; // Can delete files PK_CAPS_OPTIONS = 16; // Settings dialog exists PK_CAPS_MEMPACK = 32; // Supports archiving to memory PK_CAPS_BY_CONTENT = 64; // Detect archive type by content PK_CAPS_SEARCHTEXT = 128; // Can search text in archive PK_CAPS_HIDE = 256; // Show as a regular file (hide archive icon), don't open on Enter, only on Ctrl+PgDn PK_CAPS_ENCRYPT = 512; // Plug-in supports parameter PK_PACK_ENCRYPT
{ Flags for StartMemPackW, StartMemPack } MEM_OPTIONS_WANTHEADERS = 1; // Return archive headers with packed data
{ Return values of PackToMem } MEMPACK_OK = 0; // Function call finished OK, but there is more data MEMPACK_DONE = 1; // Function call finished OK, there is no more data
{ Flags for PkSetCryptCallback } PK_CRYPTOPT_MASTERPASS_SET = 1; // The user already has a master password defined
{ Flags for PkCryptProc callback } PK_CRYPT_SAVE_PASSWORD = 1; PK_CRYPT_LOAD_PASSWORD = 2; PK_CRYPT_LOAD_PASSWORD_NO_UI = 3; // Load password only if master password has already been entered! PK_CRYPT_COPY_PASSWORD = 4; // Copy encrypted password to new archive name PK_CRYPT_MOVE_PASSWORD = 5; // Move password when renaming an archive PK_CRYPT_DELETE_PASSWORD = 6; // Delete password
{ Parameter types for ArcParamToPlug } PK_PARTOPLUG_PASSWORD = 0; PK_PARTOPLUG_LANGUAGE = 1;
{ Parameter types for ArcParamFromPlug } PK_PARFROMPLUG_STAGE = 0; PK_PARFROMPLUG_FILESIZE = 1;
{ Return values of ArcGetPasswordW } PK_GETPASS_OK = 0; PK_GETPASS_CANCEL = 1; PK_GETPASS_SKIP = 2; PK_GETPASS_TOOLONGPASS = 3; PK_GETPASS_UNEXPECTED_ERR = -1;
{ Flags for TArcInitPluginDataW.out_PackerCapsEx } PK_CAPEX_MYSELF_ASK_PASS = 1; PK_CAPEX_CURFILE_ASK_PASS = 2; PK_CAPEX_ENCRYPTLIST = 4; PK_CAPEX_SOLID = 8;
{ Codes of tArcOpenDataW.out_ArcPropFlags } PK_ARC_VOLUME = $0001; // Volume attribute (archive volume) PK_ARC_COMMENT = $0002; // Archive comment present PK_ARC_LOCK = $0004; // Archive lock attribute PK_ARC_SOLID = $0008; // Solid archive PK_ARC_AUTHENCITY_INFO = $0020; // Authenticity information present PK_ARC_RECOVERY_RECORD = $0040; // Recovery record present PK_ARC_HEADERS_ENCRYPTED = $0080; // Block headers are encrypted PK_ARC_FIRST_VOL = $0100; // First volume (set only by RAR 3.0 and later)
{ Codes of tArcOpenDataW.ExFlags } PK_ARCEX_LOCK_ASK_PASS = $001;
{ Codes of tHeaderDataExW.Flags, tHeaderDataEx.Flags, THeaderData.Flags } PK_HF_PREVVOL = $0001; PK_HF_NEXTVOL = $0002; PK_HF_ENCRYPT = $0004; PK_HF_COMMENT = $0008; PK_HF_SOLID = $0010;
{ Threshold for progressbars double percents for TArcProcessDataProcW, TProcessDataProcW, TProcessDataProc } PK_DOUBLEPROGRESS = -100000;
MAX_PATH = 260;
type LONG_PTR = NativeInt; HWND = NativeUInt;
{ The functions calling by a plugin } TArcProcessDataProcW = function(Session: LONG_PTR; FileName: PWideChar; Size: LongInt): LongInt; stdcall; TArcGetPasswordProcW = function(Session: LONG_PTR; hArcData: THandle; ArcFileName, FileNameInArc, PasswordBuf: PWideChar; PasswordMaxLen: Integer): Integer; stdcall; TArcShowDialogProcW = function(Session: LONG_PTR; WinCaption, FormattedText, ControlsDesc, ResultsBuffer: PWideChar; pResultsBufferLen: PInteger; ImageIndex: Integer): Integer; stdcall; TArcParamFromPlugProc = function(Session: LONG_PTR; hArcData: THandle; ParameterType: Integer; ParameterData: LONG_PTR): Integer; stdcall;
TChangeVolProc = function(ArcVolName: PAnsiChar; Mode: LongInt): LongInt; stdcall; TChangeVolProcW = function(ArcVolName: PWideChar; Mode: LongInt): LongInt; stdcall; TProcessDataProc = function(FileName: PAnsiChar; Size: LongInt): LongInt; stdcall; TProcessDataProcW = function(FileName: PWideChar; Size: LongInt): LongInt; stdcall; TPkCryptProc = function(CryptoNr: Integer; Mode: Integer; ArchiveName, Password: PAnsiChar; MaxLen: Integer): Integer; stdcall; TPkCryptProcW = function(CryptoNr: Integer; Mode: Integer; ArchiveName, Password: PWideChar; MaxLen: Integer): Integer; stdcall;
PChangeVolProc = ^TChangeVolProc; PChangeVolProcW = ^TChangeVolProcW; PProcessDataProc = ^TProcessDataProc; PProcessDataProcW = ^TProcessDataProcW; PArcProcessDataProcW = ^TArcProcessDataProcW; PPkCryptProc = ^TPkCryptProc; PPkCryptProcW = ^TPkCryptProcW;
THeaderData = packed record ArcName: array[0..259] of AnsiChar; FileName: array[0..259] of AnsiChar; Flags: Cardinal; PackSize: Cardinal; UnpSize: Cardinal; HostOS: Cardinal; FileCRC: Cardinal; FileTime: Cardinal; UnpVer: Cardinal; Method: Cardinal; FileAttr: Cardinal; CmtBuf: PAnsiChar; CmtBufSize: Cardinal; CmtSize: Cardinal; CmtState: Cardinal; end; PHeaderData = ^THeaderData;
THeaderDataEx = packed record ArcName: array[0..1023] of AnsiChar; FileName: array[0..1023] of AnsiChar; Flags: Cardinal; PackSize: Cardinal; PackSizeHigh: Cardinal; UnpSize: Cardinal; UnpSizeHigh: Cardinal; HostOS: Cardinal; FileCRC: Cardinal; FileTime: Cardinal; UnpVer: Cardinal; Method: Cardinal; FileAttr: Cardinal; CmtBuf: PAnsiChar; CmtBufSize: Cardinal; CmtSize: Cardinal; CmtState: Cardinal; Reserved: array[0..1023] of AnsiChar; end;
THeaderDataExW = packed record ArcName: array[0..1023] of WideChar; FileName: array[0..1023] of WideChar; Flags: Cardinal; PackSize: Cardinal; PackSizeHigh: Cardinal; UnpSize: Cardinal; UnpSizeHigh: Cardinal; HostOS: Cardinal; FileCRC: Cardinal; FileTime: Cardinal; UnpVer: Cardinal; Method: Cardinal; FileAttr: Cardinal; CmtBuf: PAnsiChar; CmtBufSize: Cardinal; CmtSize: Cardinal; CmtState: Cardinal; Reserved: array[0..1023] of AnsiChar; end;
TOpenArchiveData = packed record ArcName: PAnsiChar; OpenMode: Integer; OpenResult: Integer; CmtBuf: PAnsiChar; CmtBufSize: Integer; CmtSize: Integer; CmtState: Integer; end; POpenArchiveData = ^TOpenArchiveData;
TOpenArchiveDataW = packed record ArcName: PWideChar; OpenMode: Integer; OpenResult: Integer; CmtBuf: PWideChar; CmtBufSize: Integer; CmtSize: Integer; CmtState: Integer; end;
TArcOpenDataW = packed record ArcNameW: PWideChar; OpenMode: Cardinal; out_OpenResult: Cardinal; out_ArcPropFlags: Cardinal; ExFlags: Cardinal; Session: LONG_PTR; ProcessDataW: TArcProcessDataProcW; Reserved: array[0..7] of LONG_PTR; end;
TArcInitPluginDataW = packed record VersMajor: Word; VersMinor: Word; out_VersMajor: Word; out_VersMinor: Word; PluginFileName: PWideChar; ArcGetPasswordW: TArcGetPasswordProcW; ArcShowDialogW: TArcShowDialogProcW; ArcParamFromPlug: TArcParamFromPlugProc; ChangeVolProc: TChangeVolProc; ChangeVolProcW: TChangeVolProcW; DefaultIniNameW: array[0..MAX_PATH-1] of WideChar; out_Extensions: PWideChar; out_PackerCaps: Cardinal; out_PackerCapsEx: Cardinal; Reserved: array[0..7] of LONG_PTR; end; PArcInitPluginDataW = ^TArcInitPluginDataW;
TArcStageTypes = ( astNormal, astPrepareArchive ); TArcProcessingStageData = packed record ArcStageType: TArcStageTypes; TotalFilesSize: Int64; TotalFilesCount: Int64; Reserved: LONG_PTR; end; PArcProcessingStageData = ^TArcProcessingStageData;
TPackDefaultParamStruct = packed record Size: Integer; PluginInterfaceVersionLow: Integer; PluginInterfaceVersionHi: Integer; DefaultIniName: array[0..MAX_PATH-1] of AnsiChar; end; PPackDefaultParamStruct = ^TPackDefaultParamStruct;
{ The functions of a plugin } TArcInitPluginProcW = function(pData: PArcInitPluginDataW): LongBool; stdcall; TArcOpenProcW = function(var ArchiveData: tArcOpenDataW): THandle; stdcall; TArcParamToPlugProc = function(Session: LONG_PTR; hArcData: THandle; ParameterType: Integer; ParameterData: LONG_PTR): Integer; stdcall; TArcPackFilesProcW = function(PackedFile, SubPath, SrcPath, AddList: PWideChar; Flags: Integer; Size: Int64; Session: LONG_PTR; ProcessDataW: TArcProcessDataProcW; Reserved: Pointer): Integer; stdcall; TArcDeleteFilesProcW = function(PackedFile, DeleteList: PWideChar; Session: LONG_PTR; ProcessDataW: TArcProcessDataProcW; Reserved: Pointer): Integer; stdcall;
TOpenArchiveProc = function(var ArchiveData: TOpenArchiveData): THandle; stdcall; TOpenArchiveProcW = function(var ArchiveData: TOpenArchiveDataW): THandle; stdcall; TReadHeaderProc = function(hArcData: THandle; var HeaderData: THeaderData): Integer; stdcall; TReadHeaderExProc = function(hArcData: THandle; var HeaderDataEx: THeaderDataEx): Integer; stdcall; TReadHeaderExProcW = function(hArcData: THandle; var HeaderDataExW: THeaderDataExW): Integer; stdcall; TProcessFileProc = function(hArcData: THandle; Operation: Integer; DestPath, DestName: PAnsiChar): Integer; stdcall; TProcessFileProcW = function(hArcData: THandle; Operation: Integer; DestPath, DestName: PWideChar): Integer; stdcall; TDeleteFilesProc = function(PackedFile, DeleteList: PAnsiChar): Integer; stdcall; TDeleteFilesProcW = function(PackedFile, DeleteList: PWideChar): Integer; stdcall; TCloseArchiveProc = function(hArcData: THandle): Integer; stdcall; TPackFilesProc = function(PackedFile, SubPath, SrcPath, AddList: PAnsiChar; Flags: Integer): Integer; stdcall; TPackFilesProcW = function(PackedFile, SubPath, SrcPath, AddList: PWideChar; Flags: Integer): Integer; stdcall; TGetPackerCapsProc = function: Integer; stdcall; TSetProcessDataProcProc = procedure(hArcData: THandle; ProcessDataProc: TProcessDataProc); stdcall; TSetProcessDataProcProcW = procedure(hArcData: THandle; ProcessDataProcW: TProcessDataProcW); stdcall; TSetChangeVolProcProc = procedure(hArcData: THandle; ChangeVolProc: TChangeVolProc); stdcall; TSetChangeVolProcProcW = procedure(hArcData: THandle; ChangeVolProcW: TChangeVolProcW); stdcall; TConfigurePackerProc = procedure(Parent: HWND; DLLinstance: HINST); stdcall; TStartMemPackProc = function(Options: Integer; FileName: PAnsiChar): THandle; stdcall; TStartMemPackProcW = function(Options: Integer; FileName: PWideChar): THandle; stdcall; TPackToMemProc = function(hMemPack: THandle; BufIn: PAnsiChar; InLen: Integer; Taken: PInteger; BufOut: PAnsiChar; OutLen: Integer; Written: PInteger; SeekBy: Integer): Integer; stdcall; TDoneMemPackProc = function(hMemPack: THandle): Integer; stdcall; TCanYouHandleThisFileProc = function(FileName: PAnsiChar): LongBool; stdcall; TCanYouHandleThisFileProcW = function(FileName: PWideChar): LongBool; stdcall; TPackSetDefaultParamsProc = procedure(dps: pPackDefaultParamStruct); stdcall; TPkSetCryptCallbackProc = procedure(pPkCryptProc: TPkCryptProc; CryptoNr: Integer; Flags: Integer); stdcall; TPkSetCryptCallbackProcW = procedure(pPkCryptProcW: TPkCryptProcW; CryptoNr: Integer; Flags: Integer); stdcall; TGetBackgroundFlagsProc = function: Integer; stdcall;
implementation
end.
|