#ifndef _INSTANT_HXX_ #define _INSTANT_HXX_ 1 typedef HRESULT (STDAPICALLTYPE FNSTGCREATEPROPSTG)( IUnknown* pUnk, REFFMTID fmtid, const CLSID *pclsid, DWORD grfFlags, DWORD dwReserved, IPropertyStorage **ppPropStg ); typedef HRESULT (STDAPICALLTYPE FNSTGOPENPROPSTG)( IUnknown* pUnk, REFFMTID fmtid, DWORD grfFlags, DWORD dwReserved, IPropertyStorage **ppPropStg ); typedef HRESULT (STDAPICALLTYPE FNSTGCREATEPROPSETSTG)( IStorage *pStorage, DWORD dwReserved, IPropertySetStorage **ppPropSetStg); typedef HRESULT (STDAPICALLTYPE FNFMTIDTOPROPSTGNAME)( const FMTID *pfmtid, LPOLESTR oszName ); typedef HRESULT (STDAPICALLTYPE FNPROPSTGNAMETOFMTID)( const LPOLESTR oszName, FMTID *pfmtid ); typedef HRESULT (STDAPICALLTYPE FNPROPVARIANTCOPY)( PROPVARIANT * pvarDest, const PROPVARIANT * pvarSrc ); typedef HRESULT (STDAPICALLTYPE FNPROPVARIANTCLEAR)( PROPVARIANT * pvar ); typedef HRESULT (STDAPICALLTYPE FNFREEPROPVARIANTARRAY)( ULONG cVariants, PROPVARIANT * rgvars ); typedef HRESULT (STDAPICALLTYPE FNSTGCREATESTORAGEEX)( IN const WCHAR* pwcsName, IN DWORD grfMode, IN DWORD stgfmt, IN DWORD grfAttrs, IN void * reserved1, IN void * reserved2, IN REFIID riid, OUT void ** ppObjectOpen ); typedef HRESULT (STDAPICALLTYPE FNSTGOPENSTORAGEEX)( IN const WCHAR* pwcsName, IN DWORD grfMode, IN DWORD stgfmt, IN DWORD grfAttrs, IN void * reserved1, IN void * reserved2, IN REFIID riid, OUT void ** ppObjectOpen); typedef HRESULT (STDAPICALLTYPE FNSTGOPENSTORAGEONHANDLE)( IN HANDLE hStream, IN DWORD grfMode, IN void *reserved1, IN void *reserved2, IN REFIID riid, OUT void **ppObjectOpen ); typedef HRESULT (STDAPICALLTYPE FNSTGCREATESTORAGEONHANDLE)( IN HANDLE hStream, IN DWORD grfMode, IN DWORD stgfmt, IN void *reserved1, IN void *reserved2, IN REFIID riid, OUT void **ppObjectOpen ); typedef ULONG (__stdcall FNSTGPROPERTYLENGTHASVARIANT)( IN SERIALIZEDPROPERTYVALUE const *pprop, IN ULONG cbprop, IN USHORT CodePage, IN BYTE flags); typedef SERIALIZEDPROPERTYVALUE * (__stdcall FNSTGCONVERTVARIANTTOPROPERTY)( IN PROPVARIANT const *pvar, IN USHORT CodePage, OUT SERIALIZEDPROPERTYVALUE *pprop, IN OUT ULONG *pcb, IN PROPID pid, IN BOOLEAN fVariantVector, OPTIONAL OUT ULONG *pcIndirect); typedef BOOLEAN (__stdcall FNSTGCONVERTPROPERTYTOVARIANT)( IN SERIALIZEDPROPERTYVALUE const *pprop, IN USHORT CodePage, OUT PROPVARIANT *pvar, IN PMemoryAllocator *pma); extern HINSTANCE g_hinstDLL; extern FNSTGCREATEPROPSTG *g_pfnStgCreatePropStg; extern FNSTGOPENPROPSTG *g_pfnStgOpenPropStg; extern FNSTGCREATEPROPSETSTG *g_pfnStgCreatePropSetStg; extern FNFMTIDTOPROPSTGNAME *g_pfnFmtIdToPropStgName; extern FNPROPSTGNAMETOFMTID *g_pfnPropStgNameToFmtId; extern FNPROPVARIANTCLEAR *g_pfnPropVariantClear; extern FNPROPVARIANTCOPY *g_pfnPropVariantCopy; extern FNFREEPROPVARIANTARRAY *g_pfnFreePropVariantArray; extern FNSTGCREATESTORAGEEX *g_pfnStgCreateStorageEx; extern FNSTGOPENSTORAGEEX *g_pfnStgOpenStorageEx; extern FNSTGOPENSTORAGEONHANDLE *g_pfnStgOpenStorageOnHandle; extern FNSTGCREATESTORAGEONHANDLE *g_pfnStgCreateStorageOnHandle; extern FNSTGPROPERTYLENGTHASVARIANT *g_pfnStgPropertyLengthAsVariant; extern FNSTGCONVERTVARIANTTOPROPERTY *g_pfnStgConvertVariantToProperty; extern FNSTGCONVERTPROPERTYTOVARIANT *g_pfnStgConvertPropertyToVariant; extern FNSTGOPENSTORAGEONHANDLE *g_pfnStgOpenStorageOnHandle; extern EnumImplementation g_enumImplementation; extern DWORD g_Restrictions; inline BOOL UsingQIImplementation() { if( PROPIMP_DOCFILE_QI == g_enumImplementation || PROPIMP_STORAGE == g_enumImplementation || PROPIMP_NTFS == g_enumImplementation ) { return( TRUE ); } else { return( FALSE ); } } inline HRESULT StgToPropSetStg( IStorage *pStg, IPropertySetStorage **ppPropSetStg ) { if( PROPIMP_DOCFILE_OLE32 == g_enumImplementation || PROPIMP_DOCFILE_IPROP == g_enumImplementation ) { return( g_pfnStgCreatePropSetStg( pStg, 0, ppPropSetStg )); } else if( UsingQIImplementation() ) return( pStg->QueryInterface( IID_IPropertySetStorage, (void**) ppPropSetStg )); else return( E_FAIL ); } #endif // #ifndef _INSTANT_HXX_