C ++用のヘッダーファイル

Top  Previous  Next

/*

 ACX plugin interface for oMega Commander.

 Interface version: 3.0

 Pylonos.com LLC (c)

 http://pylonos.com

*/

 

#pragma pack(push,1)

 

/* Version of the plugin interface */

#define PlugACXVers_Major            3

#define PlugACXVers_Minor            0

 

#define PlugWCXVers_Major            2

#define PlugWCXVers_Minor            21

 

/* The error codes are returned to the calling application */

#define E_SUCCESS                    0  // Successful execution

#define E_END_ARCHIVE                10 // No more files in archive (archive end)

#define E_NO_MEMORY                  11 // Not enough memory

#define E_BAD_DATA                   12 // Data error

#define E_BAD_ARCHIVE                13 // CRC error in archive data

#define E_UNKNOWN_FORMAT             14 // Invalid archive format

#define E_EOPEN                      15 // Impossible to open existing file

#define E_ECREATE                    16 // Impossible to create a file

#define E_ECLOSE                     17 // Error closing the file

#define E_EREAD                      18 // Error reading file

#define E_EWRITE                     19 // Error writing file

#define E_SMALL_BUF                  20 // Buffer is too small

#define E_EABORTED                   21 // Operation was interrupted by the user

#define E_NO_FILES                   22 // Files not found

#define E_TOO_MANY_FILES             23 // Too many files to archive

#define E_NOT_SUPPORTED              24 // Not supported operation

 

#define E_EX_UNKNOWN_ERR             201 // Unknown error

#define E_EX_ENCRYPTED               202 // File/archive is encrypted and be processed (decryption isn't supported)

#define E_EX_FILE_TOO_BIG            203 // File is too big

#define E_EX_FILE_IN_USE             204 // File is locked/in use and can't be processed

#define E_EX_NOT_SUPPORTED_METHOD    205 // Archive method isn't supported

#define E_EX_SKIP                    206 // File was skipped

#define E_EX_MAYBE_DISKFULL          207 // Maybe disk full

 

/* Open archive flags */

#define PK_OM_LIST                   0   // View archive content

#define PK_OM_EXTRACT                1   // Unpack archive

 

/* Flags for ProcessFile, ProcessFileW */

#define PK_SKIP                      0   // Skip file (without unpacking)

#define PK_TEST                      1   // Test integrity of the file

#define PK_EXTRACT                   2   // Unpack the file to disk

 

/* Flags for ChangeVolProcW */

#define PK_VOL_ASK                   0   // Ask the user about location of the next volume

#define PK_VOL_NOTIFY                1   // Notify the application, that the next volume can be unpackd

 

/* Flags for PackFiles, PackFilesW */

#define PK_PACK_MOVE_FILES           1   // Delete the input file after archiving

#define PK_PACK_SAVE_PATHS           2   // Save file paths

#define PK_PACK_ENCRYPT              4   // Request file password during encryption

 

/* Flags for ArcPackFilesW */

#define PK_PACKEX_MOVE_FILES         1

#define PK_PACKEX_SAVE_PATHS         2

#define PK_PACKEX_ENCRYPT            4

#define PK_PACKEX_ENCRYPTLIST        8

#define PK_PACKEX_SOLID              16

 

/* Flags of the ArcPlugInitData.out_PackerCaps, GetPackCaps */

#define PK_CAPS_NEW                  1   // Can create new archives

#define PK_CAPS_MODIFY               2   // Can change existing archives

#define PK_CAPS_MULTIPLE             4   // Archive can contain multiple files

#define PK_CAPS_DELETE               8   // Can delete files

#define PK_CAPS_OPTIONS              16  // Settings dialog exists

#define PK_CAPS_MEMPACK              32  // Supports archiving to memory

#define PK_CAPS_BY_CONTENT           64  // Detect archive type by content

#define PK_CAPS_SEARCHTEXT           128 // Can search text in archive

#define PK_CAPS_HIDE                 256 // Show as a regular file (hide archive icon), don't open on Enter, only on Ctrl+PgDn

#define PK_CAPS_ENCRYPT              512 // Plug-in supports parameter PK_PACK_ENCRYPT

 

/* Flags for StartMemPackW, StartMemPack */

#define MEM_OPTIONS_WANTHEADERS      1   // Return archive headers with packed data

 

/* Return values of PackToMem */

#define MEMPACK_OK                   0   // Function call finished OK, but there is more data

#define MEMPACK_DONE                 1   // Function call finished OK, there is no more data

 

/* Flags for PkSetCryptCallback */

#define PK_CRYPTOPT_MASTERPASS_SET   1   // The user already has a master password defined

 

/* Flags for PkCryptProc callback */

#define PK_CRYPT_SAVE_PASSWORD       1

#define PK_CRYPT_LOAD_PASSWORD       2

#define PK_CRYPT_LOAD_PASSWORD_NO_UI 3   // Load password only if master password has already been entered!

#define PK_CRYPT_COPY_PASSWORD       4   // Copy encrypted password to new archive name

#define PK_CRYPT_MOVE_PASSWORD       5   // Move password when renaming an archive

#define PK_CRYPT_DELETE_PASSWORD     6   // Delete password

 

/* Parameter types for ArcParamToPlug */

#define PK_PARTOPLUG_PASSWORD        0

#define PK_PARTOPLUG_LANGUAGE        1

 

/* Parameter types for ArcParamFromPlug */

#define PK_PARFROMPLUG_STAGE         0

#define PK_PARFROMPLUG_FILESIZE      1

 

/* Return values of ArcGetPasswordW */

#define PK_GETPASS_OK                0

#define PK_GETPASS_CANCEL            1

#define PK_GETPASS_SKIP              2

#define PK_GETPASS_UNEXPECTED_ERR    -1

 

/* Flags for ArcInitPluginDataW.out_PackerCapsEx */

#define PK_CAPEX_MYSELF_ASK_PASS     1

#define PK_CAPEX_CURFILE_ASK_PASS    2

#define PK_CAPEX_ENCRYPTLIST         4

#define PK_CAPEX_SOLID               8

 

/* Codes of ArcOpenDataW.out_ArcPropFlags */

#define PK_ARC_VOLUME                0x001 // Volume attribute (archive volume)

#define PK_ARC_COMMENT               0x002 // Archive comment present

#define PK_ARC_LOCK                  0x004 // Archive lock attribute

#define PK_ARC_SOLID                 0x008 // Solid attribute

#define PK_ARC_AUTHENCITY_INFO       0x020 // Authenticity information present

#define PK_ARC_RECOVERY_RECORD       0x040 // Recovery record present

#define PK_ARC_HEADERS_ENCRYPTED     0x080 // Block headers are encrypted

#define PK_ARC_FIRST_VOL             0x100 // First volume

 

/* Codes of ArcOpenDataW.ExFlags */

#define PK_ARCEX_LOCK_ASK_PASS       0x001

 

/* Codes of tHeaderDataExW.Flags, tHeaderDataEx.Flags, THeaderData.Flags */

#define PK_HF_PREVVOL                0x0001;

#define PK_HF_NEXTVOL                0x0002;

#define PK_HF_ENCRYPT                0x0004;

#define PK_HF_COMMENT                0x0008;

#define PK_HF_SOLID                  0x0010;

 

/* Threshold for progressbars double percents for ArcProcessDataProcW, ProcessDataProcW, ProcessDataProc */

#define PK_DOUBLEPROGRESS            -100000

 

/* The functions calling by a plugin */

typedef int (__stdcall *ArcProcessDataProcW)(_In_ LONG_PTR Session, _In_ wchar_t *FileName, _In_ int Size);

typedef int (__stdcall *ArcGetPasswordProcW)(_In_ LONG_PTR Session, _In_ HANDLE hArcData, _In_ wchar_t *ArcFileName, _In_ wchar_t *FileNameInArc, _Out_ wchar_t *Password, _In_ int PasswordMaxLen);

typedef int (__stdcall *ArcShowDialogProcW)(_In_ LONG_PTR Session, _In_ wchar_t *WinCaption, _In_ wchar_t *FormattedText, _In_ wchar_t *ControlsDesc, _Out_opt_ wchar_t *ResultsBuffer, _Inout_ int *pResultsBufferLen, _In_ int ImageIndex);

typedef int (__stdcall *ArcParamFromPlugProc)(_In_ LONG_PTR Session, _In_ HANDLE hArcData, _In_ int ParameterType, _In_ LONG_PTR ParameterData);

 

typedef int (__stdcall *tChangeVolProc)(_Inout_ unsigned char *ArcVolName, _In_ int Mode);

typedef int (__stdcall *tChangeVolProcW)(_Inout_ wchar_t *ArcVolName, _In_ int Mode);

typedef int (__stdcall *tProcessDataProc)(_In_ unsigned char *FileName, _In_ int Size);

typedef int (__stdcall *tProcessDataProcW)(_In_ wchar_t *FileName, _In_ int Size);

typedef int (__stdcall *tPkCryptProc)(_In_ int CryptoNr, _In_ int Mode, _In_ char *ArchiveName, _In_ char *Password, _In_ int MaxLen);

typedef int (__stdcall *tPkCryptProcW)(_In_ int CryptoNr, _In_ int Mode, _In_ wchar_t *ArchiveName, _In_ wchar_t *Password, _In_ int MaxLen);

 

typedef struct tHeaderData {

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;

};

 

typedef struct tHeaderDataEx {

char         ArcName[1024];

char         FileName[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;

char         Reserved[1024];

};

 

typedef struct tHeaderDataExW {

wchar_t      ArcName[1024];

wchar_t      FileName[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;

char         Reserved[1024];

};

 

typedef struct tOpenArchiveData {

char *ArcName;

int  OpenMode;

int  OpenResult;

char *CmtBuf;

int  CmtBufSize;

int  CmtSize;

int  CmtState;

};

 

typedef struct tOpenArchiveDataW {

wchar_t *ArcName;

int     OpenMode;

int     OpenResult;

wchar_t *CmtBuf;

int     CmtBufSize;

int     CmtSize;

int     CmtState;

};

 

typedef struct ArcOpenDataW {

wchar_t             *ArcNameW;

unsigned int        OpenMode;

unsigned int        out_OpenResult;

unsigned int        out_ArcPropFlags;

unsigned int        ExFlags;

 LONG_PTR            Session;

 ArcProcessDataProcW ProcessDataW;

 LONG_PTR            Reserved[8];

};

 

typedef struct ArcInitPluginDataW {

unsigned short       VersMajor;

unsigned short       VersMinor;

unsigned short       out_VersMajor;

unsigned short       out_VersMinor;

wchar_t              *PluginFileName;

 ArcGetPasswordProcW  ArcGetPasswordW;

 ArcShowDialogProcW   ArcShowDialogW;

 ArcParamFromPlugProc ArcParamFromPlug;

 tChangeVolProc       ChangeVol;

 tChangeVolProcW      ChangeVolW;

wchar_t              DefaultIniNameW[MAX_PATH];

wchar_t              *out_Extensions;

unsigned int         out_PackerCaps;

unsigned int         out_PackerCapsEx;

 LONG_PTR             Reserved[8];

};

 

enum ArcStageTypes { astNormal, astPrepareArchive };

typedef struct ArcProcessingStageData {

 ArcStageTypes ArcStageType;

__int64 TotalFilesSize;

__int64 TotalFilesCount;

 LONG_PTR Reserved;

};

 

typedef struct PackDefaultParamStruct {

int   size;

 DWORD PluginInterfaceVersionLow;

 DWORD PluginInterfaceVersionHi;

char  DefaultIniName[MAX_PATH];

};

 

#pragma pack(pop)

 

 

/* The functions of a plugin */

typedef BOOL (__stdcall *ArcInitPluginProcW)(_Inout_ ArcInitPluginDataW *pData);

typedef HANDLE (__stdcall *ArcOpenProcW)(_Inout_ ArcOpenDataW *ArchiveData);

typedef int (__stdcall *ArcParamToPlugProc)(_In_ LONG_PTR Session, _In_ HANDLE hArcData, _In_ int ParameterType, _In_ LONG_PTR ParameterData);

typedef int (__stdcall *ArcPackFilesProcW)(_In_ wchar_t *PackedFile, _In_ wchar_t *SubPath, _In_ wchar_t *SrcPath, _In_ wchar_t *AddList, _In_ int Flags, _In_ __int64 Size, _In_ LONG_PTR Session, _In_ ArcProcessDataProcW ProcessDataW, _In_ LONG_PTR Reserved);

typedef int (__stdcall *ArcDeleteFilesProcW)(_In_ wchar_t *PackedFile, _In_ wchar_t *DeleteList, _In_ LONG_PTR Session, _In_ ArcProcessDataProcW ProcessDataW, _In_ LONG_PTR Reserved);

 

typedef HANDLE (__stdcall *OpenArchiveProc)(_Inout_ tOpenArchiveData *ArchiveData);

typedef HANDLE (__stdcall *OpenArchiveProcW)(_Inout_ tOpenArchiveDataW *ArchiveData);

typedef int (__stdcall *ReadHeaderProc)(_In_ HANDLE hArcData, _Out_ tHeaderData *HeaderData);

typedef int (__stdcall *ReadHeaderExProc)(_In_ HANDLE hArcData, _Out_ tHeaderDataEx *HeaderDataEx);

typedef int (__stdcall *ReadHeaderExProcW)(_In_ HANDLE hArcData, _Out_ tHeaderDataExW *HeaderDataEx);

typedef int (__stdcall *ProcessFileProc)(_In_ HANDLE hArcData, _In_ int Operation, _In_opt_ char *DestPath, _In_opt_ char *DestName);

typedef int (__stdcall *ProcessFileProcW)(_In_ HANDLE hArcData, _In_ int Operation, _In_opt_ wchar_t *DestPath, _In_opt_ wchar_t *DestName);

typedef int (__stdcall *DeleteFilesProc)(_In_ char *PackedFile, _In_ char *DeleteList);

typedef int (__stdcall *DeleteFilesProcW)(_In_ wchar_t *PackedFile, _In_ wchar_t *DeleteList);

typedef int (__stdcall *CloseArchiveProc)(_In_ HANDLE hArcData);

typedef int (__stdcall *PackFilesProc)(_In_ char *PackedFile, _In_ char *SubPath, _In_ char *SrcPath, _In_ char *AddList, _In_ int Flags);

typedef int (__stdcall *PackFilesProcW)(_In_ wchar_t *PackedFile, _In_ wchar_t *SubPath, _In_ wchar_t *SrcPath, _In_ wchar_t *AddList, _In_ int Flags);

typedef int (__stdcall *GetPackerCapsProc)();

typedef void (__stdcall *SetProcessDataProcProc)(_In_ HANDLE hArcData, _In_ tProcessDataProc pProcessDataProc);

typedef void (__stdcall *SetProcessDataProcProcW)(_In_ HANDLE hArcData, _In_ tProcessDataProcW pProcessDataProc);

typedef void (__stdcall *SetChangeVolProcProc)(_In_ HANDLE hArcData, _In_ tChangeVolProc pChangeVolProc);

typedef void (__stdcall *SetChangeVolProcProcW)(_In_ HANDLE hArcData, _In_ tChangeVolProcW pChangeVolProc);

typedef void (__stdcall *ConfigurePackerProc)(_In_ HWND Parent, _In_ HINSTANCE DllInstance);

typedef HANDLE (__stdcall *StartMemPackProc)(_In_ int Options, _In_ char *FileName);

typedef HANDLE (__stdcall *StartMemPackProcW)(_In_ int Options, _In_ wchar_t *FileName);

typedef int (__stdcall *PackToMemProc)(_In_ int hMemPack, _In_ char *BufIn, _In_ int InLen, _Out_ int *Taken, _Out_ char *BufOut, _In_ int OutLen, _Out_ int *Written, _In_ int SeekBy);

typedef int (__stdcall *DoneMemPackProc)(_In_ int hMemPack);

typedef BOOL (__stdcall *CanYouHandleThisFileProc)(_In_ char *FileName);

typedef BOOL (__stdcall *CanYouHandleThisFileProcW)(_In_ wchar_t *FileName);

typedef void (__stdcall *PackSetDefaultParamsProc)(_In_ PackDefaultParamStruct* dps);

typedef void (__stdcall *PkSetCryptCallbackProc)(_In_ tPkCryptProc pPkCryptProc, _In_ int CryptoNr, _In_ int Flags);

typedef void (__stdcall *PkSetCryptCallbackProcW)(_In_ tPkCryptProcW pPkCryptProc, _In_ int CryptoNr, _In_ int Flags);

typedef int (__stdcall *GetBackgroundFlagsProc)();