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.