1baa3858d3f5d128a5c8466b700098109edcad5f2repo sync// IArchive.h 2baa3858d3f5d128a5c8466b700098109edcad5f2repo sync 3baa3858d3f5d128a5c8466b700098109edcad5f2repo sync#ifndef __IARCHIVE_H 4baa3858d3f5d128a5c8466b700098109edcad5f2repo sync#define __IARCHIVE_H 5baa3858d3f5d128a5c8466b700098109edcad5f2repo sync 6baa3858d3f5d128a5c8466b700098109edcad5f2repo sync#include "../IProgress.h" 7baa3858d3f5d128a5c8466b700098109edcad5f2repo sync#include "../IStream.h" 8baa3858d3f5d128a5c8466b700098109edcad5f2repo sync#include "../PropID.h" 9baa3858d3f5d128a5c8466b700098109edcad5f2repo sync 10baa3858d3f5d128a5c8466b700098109edcad5f2repo sync#define ARCHIVE_INTERFACE_SUB(i, base, x) DECL_INTERFACE_SUB(i, base, 6, x) 11baa3858d3f5d128a5c8466b700098109edcad5f2repo sync#define ARCHIVE_INTERFACE(i, x) ARCHIVE_INTERFACE_SUB(i, IUnknown, x) 12baa3858d3f5d128a5c8466b700098109edcad5f2repo sync 13baa3858d3f5d128a5c8466b700098109edcad5f2repo syncnamespace NFileTimeType 14baa3858d3f5d128a5c8466b700098109edcad5f2repo sync{ 15baa3858d3f5d128a5c8466b700098109edcad5f2repo sync enum EEnum 16baa3858d3f5d128a5c8466b700098109edcad5f2repo sync { 17baa3858d3f5d128a5c8466b700098109edcad5f2repo sync kWindows, 18baa3858d3f5d128a5c8466b700098109edcad5f2repo sync kUnix, 19baa3858d3f5d128a5c8466b700098109edcad5f2repo sync kDOS 20baa3858d3f5d128a5c8466b700098109edcad5f2repo sync }; 21baa3858d3f5d128a5c8466b700098109edcad5f2repo sync} 22baa3858d3f5d128a5c8466b700098109edcad5f2repo sync 23baa3858d3f5d128a5c8466b700098109edcad5f2repo syncnamespace NArchive 24baa3858d3f5d128a5c8466b700098109edcad5f2repo sync{ 25baa3858d3f5d128a5c8466b700098109edcad5f2repo sync enum 26baa3858d3f5d128a5c8466b700098109edcad5f2repo sync { 27baa3858d3f5d128a5c8466b700098109edcad5f2repo sync kName = 0, 28baa3858d3f5d128a5c8466b700098109edcad5f2repo sync kClassID, 29baa3858d3f5d128a5c8466b700098109edcad5f2repo sync kExtension, 30baa3858d3f5d128a5c8466b700098109edcad5f2repo sync kAddExtension, 31baa3858d3f5d128a5c8466b700098109edcad5f2repo sync kUpdate, 32baa3858d3f5d128a5c8466b700098109edcad5f2repo sync kKeepName, 33baa3858d3f5d128a5c8466b700098109edcad5f2repo sync kStartSignature, 34baa3858d3f5d128a5c8466b700098109edcad5f2repo sync kFinishSignature, 35baa3858d3f5d128a5c8466b700098109edcad5f2repo sync kAssociate 36baa3858d3f5d128a5c8466b700098109edcad5f2repo sync }; 37baa3858d3f5d128a5c8466b700098109edcad5f2repo sync 38baa3858d3f5d128a5c8466b700098109edcad5f2repo sync namespace NExtract 39baa3858d3f5d128a5c8466b700098109edcad5f2repo sync { 40baa3858d3f5d128a5c8466b700098109edcad5f2repo sync namespace NAskMode 41baa3858d3f5d128a5c8466b700098109edcad5f2repo sync { 42baa3858d3f5d128a5c8466b700098109edcad5f2repo sync enum 43baa3858d3f5d128a5c8466b700098109edcad5f2repo sync { 44baa3858d3f5d128a5c8466b700098109edcad5f2repo sync kExtract = 0, 45baa3858d3f5d128a5c8466b700098109edcad5f2repo sync kTest, 46baa3858d3f5d128a5c8466b700098109edcad5f2repo sync kSkip 47baa3858d3f5d128a5c8466b700098109edcad5f2repo sync }; 48baa3858d3f5d128a5c8466b700098109edcad5f2repo sync } 49baa3858d3f5d128a5c8466b700098109edcad5f2repo sync namespace NOperationResult 50baa3858d3f5d128a5c8466b700098109edcad5f2repo sync { 51baa3858d3f5d128a5c8466b700098109edcad5f2repo sync enum 52baa3858d3f5d128a5c8466b700098109edcad5f2repo sync { 53baa3858d3f5d128a5c8466b700098109edcad5f2repo sync kOK = 0, 54baa3858d3f5d128a5c8466b700098109edcad5f2repo sync kUnSupportedMethod, 55baa3858d3f5d128a5c8466b700098109edcad5f2repo sync kDataError, 56baa3858d3f5d128a5c8466b700098109edcad5f2repo sync kCRCError 57baa3858d3f5d128a5c8466b700098109edcad5f2repo sync }; 58baa3858d3f5d128a5c8466b700098109edcad5f2repo sync } 59baa3858d3f5d128a5c8466b700098109edcad5f2repo sync } 60baa3858d3f5d128a5c8466b700098109edcad5f2repo sync namespace NUpdate 61baa3858d3f5d128a5c8466b700098109edcad5f2repo sync { 62baa3858d3f5d128a5c8466b700098109edcad5f2repo sync namespace NOperationResult 63baa3858d3f5d128a5c8466b700098109edcad5f2repo sync { 64baa3858d3f5d128a5c8466b700098109edcad5f2repo sync enum 65baa3858d3f5d128a5c8466b700098109edcad5f2repo sync { 66baa3858d3f5d128a5c8466b700098109edcad5f2repo sync kOK = 0, 67baa3858d3f5d128a5c8466b700098109edcad5f2repo sync kError 68baa3858d3f5d128a5c8466b700098109edcad5f2repo sync }; 69baa3858d3f5d128a5c8466b700098109edcad5f2repo sync } 70baa3858d3f5d128a5c8466b700098109edcad5f2repo sync } 71baa3858d3f5d128a5c8466b700098109edcad5f2repo sync} 72baa3858d3f5d128a5c8466b700098109edcad5f2repo sync 73baa3858d3f5d128a5c8466b700098109edcad5f2repo sync#define INTERFACE_IArchiveOpenCallback(x) \ 74baa3858d3f5d128a5c8466b700098109edcad5f2repo sync STDMETHOD(SetTotal)(const UInt64 *files, const UInt64 *bytes) x; \ 75baa3858d3f5d128a5c8466b700098109edcad5f2repo sync STDMETHOD(SetCompleted)(const UInt64 *files, const UInt64 *bytes) x; \ 76baa3858d3f5d128a5c8466b700098109edcad5f2repo sync 77baa3858d3f5d128a5c8466b700098109edcad5f2repo syncARCHIVE_INTERFACE(IArchiveOpenCallback, 0x10) 78baa3858d3f5d128a5c8466b700098109edcad5f2repo sync{ 79baa3858d3f5d128a5c8466b700098109edcad5f2repo sync INTERFACE_IArchiveOpenCallback(PURE); 80baa3858d3f5d128a5c8466b700098109edcad5f2repo sync}; 81baa3858d3f5d128a5c8466b700098109edcad5f2repo sync 82baa3858d3f5d128a5c8466b700098109edcad5f2repo sync 83baa3858d3f5d128a5c8466b700098109edcad5f2repo sync#define INTERFACE_IArchiveExtractCallback(x) \ 84baa3858d3f5d128a5c8466b700098109edcad5f2repo sync INTERFACE_IProgress(x) \ 85baa3858d3f5d128a5c8466b700098109edcad5f2repo sync STDMETHOD(GetStream)(UInt32 index, ISequentialOutStream **outStream, Int32 askExtractMode) x; \ 86baa3858d3f5d128a5c8466b700098109edcad5f2repo sync STDMETHOD(PrepareOperation)(Int32 askExtractMode) x; \ 87baa3858d3f5d128a5c8466b700098109edcad5f2repo sync STDMETHOD(SetOperationResult)(Int32 resultEOperationResult) x; \ 88baa3858d3f5d128a5c8466b700098109edcad5f2repo sync 89baa3858d3f5d128a5c8466b700098109edcad5f2repo syncARCHIVE_INTERFACE_SUB(IArchiveExtractCallback, IProgress, 0x20) 90baa3858d3f5d128a5c8466b700098109edcad5f2repo sync{ 91baa3858d3f5d128a5c8466b700098109edcad5f2repo sync INTERFACE_IArchiveExtractCallback(PURE) 92baa3858d3f5d128a5c8466b700098109edcad5f2repo sync}; 93baa3858d3f5d128a5c8466b700098109edcad5f2repo sync 94baa3858d3f5d128a5c8466b700098109edcad5f2repo sync 95baa3858d3f5d128a5c8466b700098109edcad5f2repo sync#define INTERFACE_IArchiveOpenVolumeCallback(x) \ 96baa3858d3f5d128a5c8466b700098109edcad5f2repo sync STDMETHOD(GetProperty)(PROPID propID, PROPVARIANT *value) x; \ 97baa3858d3f5d128a5c8466b700098109edcad5f2repo sync STDMETHOD(GetStream)(const wchar_t *name, IInStream **inStream) x; \ 98baa3858d3f5d128a5c8466b700098109edcad5f2repo sync 99baa3858d3f5d128a5c8466b700098109edcad5f2repo syncARCHIVE_INTERFACE(IArchiveOpenVolumeCallback, 0x30) 100baa3858d3f5d128a5c8466b700098109edcad5f2repo sync{ 101baa3858d3f5d128a5c8466b700098109edcad5f2repo sync INTERFACE_IArchiveOpenVolumeCallback(PURE); 102baa3858d3f5d128a5c8466b700098109edcad5f2repo sync}; 103baa3858d3f5d128a5c8466b700098109edcad5f2repo sync 104baa3858d3f5d128a5c8466b700098109edcad5f2repo sync 105baa3858d3f5d128a5c8466b700098109edcad5f2repo syncARCHIVE_INTERFACE(IInArchiveGetStream, 0x40) 106baa3858d3f5d128a5c8466b700098109edcad5f2repo sync{ 107baa3858d3f5d128a5c8466b700098109edcad5f2repo sync STDMETHOD(GetStream)(UInt32 index, ISequentialInStream **stream) PURE; 108baa3858d3f5d128a5c8466b700098109edcad5f2repo sync}; 109baa3858d3f5d128a5c8466b700098109edcad5f2repo sync 110baa3858d3f5d128a5c8466b700098109edcad5f2repo sync 111baa3858d3f5d128a5c8466b700098109edcad5f2repo syncARCHIVE_INTERFACE(IArchiveOpenSetSubArchiveName, 0x50) 112baa3858d3f5d128a5c8466b700098109edcad5f2repo sync{ 113baa3858d3f5d128a5c8466b700098109edcad5f2repo sync STDMETHOD(SetSubArchiveName)(const wchar_t *name) PURE; 114baa3858d3f5d128a5c8466b700098109edcad5f2repo sync}; 115baa3858d3f5d128a5c8466b700098109edcad5f2repo sync 116baa3858d3f5d128a5c8466b700098109edcad5f2repo sync 117baa3858d3f5d128a5c8466b700098109edcad5f2repo sync/* 118baa3858d3f5d128a5c8466b700098109edcad5f2repo syncIInArchive::Extract: 119baa3858d3f5d128a5c8466b700098109edcad5f2repo sync indices must be sorted 120baa3858d3f5d128a5c8466b700098109edcad5f2repo sync numItems = 0xFFFFFFFF means "all files" 121baa3858d3f5d128a5c8466b700098109edcad5f2repo sync testMode != 0 means "test files without writing to outStream" 122baa3858d3f5d128a5c8466b700098109edcad5f2repo sync*/ 123baa3858d3f5d128a5c8466b700098109edcad5f2repo sync 124baa3858d3f5d128a5c8466b700098109edcad5f2repo sync#define INTERFACE_IInArchive(x) \ 125baa3858d3f5d128a5c8466b700098109edcad5f2repo sync STDMETHOD(Open)(IInStream *stream, const UInt64 *maxCheckStartPosition, IArchiveOpenCallback *openArchiveCallback) x; \ 126baa3858d3f5d128a5c8466b700098109edcad5f2repo sync STDMETHOD(Close)() x; \ 127baa3858d3f5d128a5c8466b700098109edcad5f2repo sync STDMETHOD(GetNumberOfItems)(UInt32 *numItems) x; \ 128baa3858d3f5d128a5c8466b700098109edcad5f2repo sync STDMETHOD(GetProperty)(UInt32 index, PROPID propID, PROPVARIANT *value) x; \ 129baa3858d3f5d128a5c8466b700098109edcad5f2repo sync STDMETHOD(Extract)(const UInt32* indices, UInt32 numItems, Int32 testMode, IArchiveExtractCallback *extractCallback) x; \ 130baa3858d3f5d128a5c8466b700098109edcad5f2repo sync STDMETHOD(GetArchiveProperty)(PROPID propID, PROPVARIANT *value) x; \ 131baa3858d3f5d128a5c8466b700098109edcad5f2repo sync STDMETHOD(GetNumberOfProperties)(UInt32 *numProperties) x; \ 132baa3858d3f5d128a5c8466b700098109edcad5f2repo sync STDMETHOD(GetPropertyInfo)(UInt32 index, BSTR *name, PROPID *propID, VARTYPE *varType) x; \ 133baa3858d3f5d128a5c8466b700098109edcad5f2repo sync STDMETHOD(GetNumberOfArchiveProperties)(UInt32 *numProperties) x; \ 134baa3858d3f5d128a5c8466b700098109edcad5f2repo sync STDMETHOD(GetArchivePropertyInfo)(UInt32 index, BSTR *name, PROPID *propID, VARTYPE *varType) x; 135baa3858d3f5d128a5c8466b700098109edcad5f2repo sync 136baa3858d3f5d128a5c8466b700098109edcad5f2repo syncARCHIVE_INTERFACE(IInArchive, 0x60) 137baa3858d3f5d128a5c8466b700098109edcad5f2repo sync{ 138baa3858d3f5d128a5c8466b700098109edcad5f2repo sync INTERFACE_IInArchive(PURE) 139baa3858d3f5d128a5c8466b700098109edcad5f2repo sync}; 140baa3858d3f5d128a5c8466b700098109edcad5f2repo sync 141baa3858d3f5d128a5c8466b700098109edcad5f2repo syncARCHIVE_INTERFACE(IArchiveOpenSeq, 0x61) 142baa3858d3f5d128a5c8466b700098109edcad5f2repo sync{ 143baa3858d3f5d128a5c8466b700098109edcad5f2repo sync STDMETHOD(OpenSeq)(ISequentialInStream *stream) PURE; 144baa3858d3f5d128a5c8466b700098109edcad5f2repo sync}; 145baa3858d3f5d128a5c8466b700098109edcad5f2repo sync 146baa3858d3f5d128a5c8466b700098109edcad5f2repo sync#define INTERFACE_IArchiveUpdateCallback(x) \ 147baa3858d3f5d128a5c8466b700098109edcad5f2repo sync INTERFACE_IProgress(x); \ 148baa3858d3f5d128a5c8466b700098109edcad5f2repo sync STDMETHOD(GetUpdateItemInfo)(UInt32 index, \ 149baa3858d3f5d128a5c8466b700098109edcad5f2repo sync Int32 *newData, /*1 - new data, 0 - old data */ \ 150baa3858d3f5d128a5c8466b700098109edcad5f2repo sync Int32 *newProperties, /* 1 - new properties, 0 - old properties */ \ 151baa3858d3f5d128a5c8466b700098109edcad5f2repo sync UInt32 *indexInArchive /* -1 if there is no in archive, or if doesn't matter */ \ 152baa3858d3f5d128a5c8466b700098109edcad5f2repo sync ) x; \ 153baa3858d3f5d128a5c8466b700098109edcad5f2repo sync STDMETHOD(GetProperty)(UInt32 index, PROPID propID, PROPVARIANT *value) x; \ 154baa3858d3f5d128a5c8466b700098109edcad5f2repo sync STDMETHOD(GetStream)(UInt32 index, ISequentialInStream **inStream) x; \ 155baa3858d3f5d128a5c8466b700098109edcad5f2repo sync STDMETHOD(SetOperationResult)(Int32 operationResult) x; \ 156baa3858d3f5d128a5c8466b700098109edcad5f2repo sync 157baa3858d3f5d128a5c8466b700098109edcad5f2repo syncARCHIVE_INTERFACE_SUB(IArchiveUpdateCallback, IProgress, 0x80) 158baa3858d3f5d128a5c8466b700098109edcad5f2repo sync{ 159baa3858d3f5d128a5c8466b700098109edcad5f2repo sync INTERFACE_IArchiveUpdateCallback(PURE); 160baa3858d3f5d128a5c8466b700098109edcad5f2repo sync}; 161baa3858d3f5d128a5c8466b700098109edcad5f2repo sync 162baa3858d3f5d128a5c8466b700098109edcad5f2repo sync#define INTERFACE_IArchiveUpdateCallback2(x) \ 163baa3858d3f5d128a5c8466b700098109edcad5f2repo sync INTERFACE_IArchiveUpdateCallback(x) \ 164baa3858d3f5d128a5c8466b700098109edcad5f2repo sync STDMETHOD(GetVolumeSize)(UInt32 index, UInt64 *size) x; \ 165baa3858d3f5d128a5c8466b700098109edcad5f2repo sync STDMETHOD(GetVolumeStream)(UInt32 index, ISequentialOutStream **volumeStream) x; \ 166baa3858d3f5d128a5c8466b700098109edcad5f2repo sync 167baa3858d3f5d128a5c8466b700098109edcad5f2repo syncARCHIVE_INTERFACE_SUB(IArchiveUpdateCallback2, IArchiveUpdateCallback, 0x82) 168baa3858d3f5d128a5c8466b700098109edcad5f2repo sync{ 169baa3858d3f5d128a5c8466b700098109edcad5f2repo sync INTERFACE_IArchiveUpdateCallback2(PURE); 170baa3858d3f5d128a5c8466b700098109edcad5f2repo sync}; 171baa3858d3f5d128a5c8466b700098109edcad5f2repo sync 172baa3858d3f5d128a5c8466b700098109edcad5f2repo sync 173baa3858d3f5d128a5c8466b700098109edcad5f2repo sync#define INTERFACE_IOutArchive(x) \ 174baa3858d3f5d128a5c8466b700098109edcad5f2repo sync STDMETHOD(UpdateItems)(ISequentialOutStream *outStream, UInt32 numItems, IArchiveUpdateCallback *updateCallback) x; \ 175baa3858d3f5d128a5c8466b700098109edcad5f2repo sync STDMETHOD(GetFileTimeType)(UInt32 *type) x; 176baa3858d3f5d128a5c8466b700098109edcad5f2repo sync 177baa3858d3f5d128a5c8466b700098109edcad5f2repo syncARCHIVE_INTERFACE(IOutArchive, 0xA0) 178baa3858d3f5d128a5c8466b700098109edcad5f2repo sync{ 179baa3858d3f5d128a5c8466b700098109edcad5f2repo sync INTERFACE_IOutArchive(PURE) 180baa3858d3f5d128a5c8466b700098109edcad5f2repo sync}; 181baa3858d3f5d128a5c8466b700098109edcad5f2repo sync 182baa3858d3f5d128a5c8466b700098109edcad5f2repo sync 183baa3858d3f5d128a5c8466b700098109edcad5f2repo syncARCHIVE_INTERFACE(ISetProperties, 0x03) 184baa3858d3f5d128a5c8466b700098109edcad5f2repo sync{ 185baa3858d3f5d128a5c8466b700098109edcad5f2repo sync STDMETHOD(SetProperties)(const wchar_t **names, const PROPVARIANT *values, Int32 numProperties) PURE; 186baa3858d3f5d128a5c8466b700098109edcad5f2repo sync}; 187baa3858d3f5d128a5c8466b700098109edcad5f2repo sync 188baa3858d3f5d128a5c8466b700098109edcad5f2repo sync 189baa3858d3f5d128a5c8466b700098109edcad5f2repo sync#define IMP_IInArchive_GetProp(k) \ 190baa3858d3f5d128a5c8466b700098109edcad5f2repo sync (UInt32 index, BSTR *name, PROPID *propID, VARTYPE *varType) \ 191baa3858d3f5d128a5c8466b700098109edcad5f2repo sync { if(index >= sizeof(k) / sizeof(k[0])) return E_INVALIDARG; \ 192baa3858d3f5d128a5c8466b700098109edcad5f2repo sync const STATPROPSTG &srcItem = k[index]; \ 193baa3858d3f5d128a5c8466b700098109edcad5f2repo sync *propID = srcItem.propid; *varType = srcItem.vt; *name = 0; return S_OK; } \ 194baa3858d3f5d128a5c8466b700098109edcad5f2repo sync 195baa3858d3f5d128a5c8466b700098109edcad5f2repo sync#define IMP_IInArchive_GetProp_WITH_NAME(k) \ 196baa3858d3f5d128a5c8466b700098109edcad5f2repo sync (UInt32 index, BSTR *name, PROPID *propID, VARTYPE *varType) \ 197baa3858d3f5d128a5c8466b700098109edcad5f2repo sync { if(index >= sizeof(k) / sizeof(k[0])) return E_INVALIDARG; \ 198baa3858d3f5d128a5c8466b700098109edcad5f2repo sync const STATPROPSTG &srcItem = k[index]; \ 199baa3858d3f5d128a5c8466b700098109edcad5f2repo sync *propID = srcItem.propid; *varType = srcItem.vt; \ 200baa3858d3f5d128a5c8466b700098109edcad5f2repo sync if (srcItem.lpwstrName == 0) *name = 0; else *name = ::SysAllocString(srcItem.lpwstrName); return S_OK; } \ 201baa3858d3f5d128a5c8466b700098109edcad5f2repo sync 202baa3858d3f5d128a5c8466b700098109edcad5f2repo sync#define IMP_IInArchive_Props \ 203baa3858d3f5d128a5c8466b700098109edcad5f2repo sync STDMETHODIMP CHandler::GetNumberOfProperties(UInt32 *numProperties) \ 204baa3858d3f5d128a5c8466b700098109edcad5f2repo sync { *numProperties = sizeof(kProps) / sizeof(kProps[0]); return S_OK; } \ 205baa3858d3f5d128a5c8466b700098109edcad5f2repo sync STDMETHODIMP CHandler::GetPropertyInfo IMP_IInArchive_GetProp(kProps) 206baa3858d3f5d128a5c8466b700098109edcad5f2repo sync 207baa3858d3f5d128a5c8466b700098109edcad5f2repo sync#define IMP_IInArchive_Props_WITH_NAME \ 208baa3858d3f5d128a5c8466b700098109edcad5f2repo sync STDMETHODIMP CHandler::GetNumberOfProperties(UInt32 *numProperties) \ 209baa3858d3f5d128a5c8466b700098109edcad5f2repo sync { *numProperties = sizeof(kProps) / sizeof(kProps[0]); return S_OK; } \ 210baa3858d3f5d128a5c8466b700098109edcad5f2repo sync STDMETHODIMP CHandler::GetPropertyInfo IMP_IInArchive_GetProp_WITH_NAME(kProps) 211baa3858d3f5d128a5c8466b700098109edcad5f2repo sync 212baa3858d3f5d128a5c8466b700098109edcad5f2repo sync 213baa3858d3f5d128a5c8466b700098109edcad5f2repo sync#define IMP_IInArchive_ArcProps \ 214baa3858d3f5d128a5c8466b700098109edcad5f2repo sync STDMETHODIMP CHandler::GetNumberOfArchiveProperties(UInt32 *numProperties) \ 215baa3858d3f5d128a5c8466b700098109edcad5f2repo sync { *numProperties = sizeof(kArcProps) / sizeof(kArcProps[0]); return S_OK; } \ 216baa3858d3f5d128a5c8466b700098109edcad5f2repo sync STDMETHODIMP CHandler::GetArchivePropertyInfo IMP_IInArchive_GetProp(kArcProps) 217baa3858d3f5d128a5c8466b700098109edcad5f2repo sync 218baa3858d3f5d128a5c8466b700098109edcad5f2repo sync#define IMP_IInArchive_ArcProps_WITH_NAME \ 219baa3858d3f5d128a5c8466b700098109edcad5f2repo sync STDMETHODIMP CHandler::GetNumberOfArchiveProperties(UInt32 *numProperties) \ 220baa3858d3f5d128a5c8466b700098109edcad5f2repo sync { *numProperties = sizeof(kArcProps) / sizeof(kArcProps[0]); return S_OK; } \ 221baa3858d3f5d128a5c8466b700098109edcad5f2repo sync STDMETHODIMP CHandler::GetArchivePropertyInfo IMP_IInArchive_GetProp_WITH_NAME(kArcProps) 222baa3858d3f5d128a5c8466b700098109edcad5f2repo sync 223baa3858d3f5d128a5c8466b700098109edcad5f2repo sync#define IMP_IInArchive_ArcProps_NO_Table \ 224baa3858d3f5d128a5c8466b700098109edcad5f2repo sync STDMETHODIMP CHandler::GetNumberOfArchiveProperties(UInt32 *numProperties) \ 225baa3858d3f5d128a5c8466b700098109edcad5f2repo sync { *numProperties = 0; return S_OK; } \ 226baa3858d3f5d128a5c8466b700098109edcad5f2repo sync STDMETHODIMP CHandler::GetArchivePropertyInfo(UInt32, BSTR *, PROPID *, VARTYPE *) \ 227baa3858d3f5d128a5c8466b700098109edcad5f2repo sync { return E_NOTIMPL; } \ 228baa3858d3f5d128a5c8466b700098109edcad5f2repo sync 229baa3858d3f5d128a5c8466b700098109edcad5f2repo sync#define IMP_IInArchive_ArcProps_NO \ 230baa3858d3f5d128a5c8466b700098109edcad5f2repo sync IMP_IInArchive_ArcProps_NO_Table \ 231baa3858d3f5d128a5c8466b700098109edcad5f2repo sync STDMETHODIMP CHandler::GetArchiveProperty(PROPID, PROPVARIANT *value) \ 232baa3858d3f5d128a5c8466b700098109edcad5f2repo sync { value->vt = VT_EMPTY; return S_OK; } 233baa3858d3f5d128a5c8466b700098109edcad5f2repo sync 234baa3858d3f5d128a5c8466b700098109edcad5f2repo sync#endif 235