|
|
// ITIFaces.h -- Interface definitions within the ITSS DLL
#ifndef __ITIFACES_H__
#define __ITIFACES_H__
interface IITClassFactory : public CImpITUnknown { public:
IITClassFactory(CITUnknown *pBackObj, IUnknown *punkOuter);
// IClassFactory methods:
virtual /* [local] */ HRESULT STDMETHODCALLTYPE CreateInstance( /* [unique][in] */ IUnknown __RPC_FAR *pUnkOuter, /* [in] */ REFIID riid, /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject) = 0; virtual /* [local] */ HRESULT STDMETHODCALLTYPE LockServer( /* [in] */ BOOL fLock) = 0; };
inline IITClassFactory::IITClassFactory(CITUnknown *pBackObj, IUnknown *punkOuter) : CImpITUnknown(pBackObj, punkOuter) { }
interface IITITStorage : public CImpITUnknown { public:
IITITStorage(CITUnknown *pBackObj, IUnknown *punkOuter);
// ITStorage methods:
STDMETHOD(StgCreateDocfile)(const WCHAR * pwcsName, DWORD grfMode, DWORD reserved, IStorage ** ppstgOpen ) PURE;
STDMETHOD(StgCreateDocfileOnILockBytes)(ILockBytes * plkbyt, DWORD grfMode, DWORD reserved, IStorage ** ppstgOpen ) PURE;
STDMETHOD(StgIsStorageFile)(const WCHAR * pwcsName) PURE;
STDMETHOD(StgIsStorageILockBytes)(ILockBytes * plkbyt) PURE;
STDMETHOD(StgOpenStorage)(const WCHAR * pwcsName, IStorage * pstgPriority, DWORD grfMode, SNB snbExclude, DWORD reserved, IStorage ** ppstgOpen ) PURE;
STDMETHOD(StgOpenStorageOnILockBytes) (ILockBytes * plkbyt, IStorage * pStgPriority, DWORD grfMode, SNB snbExclude, DWORD reserved, IStorage ** ppstgOpen ) PURE;
STDMETHOD(StgSetTimes)(WCHAR const * lpszName, FILETIME const * pctime, FILETIME const * patime, FILETIME const * pmtime ) PURE;
STDMETHOD(SetControlData)(PITS_Control_Data pControlData) PURE;
STDMETHOD(DefaultControlData)(PITS_Control_Data *ppControlData) PURE; STDMETHOD(Compact)(const WCHAR * pwcsName, ECompactionLev iLev) PURE; };
inline IITITStorage::IITITStorage(CITUnknown *pBackObj, IUnknown *punkOuter) : CImpITUnknown(pBackObj, punkOuter) { }
interface IITITStorageEx : public IITITStorage { public:
IITITStorageEx(CITUnknown *pBackObj, IUnknown *punkOuter);
// ITStorageEx methods:
STDMETHOD(StgCreateDocfileForLocale) (const WCHAR * pwcsName, DWORD grfMode, DWORD reserved, LCID lcid, IStorage ** ppstgOpen ) PURE;
STDMETHOD(StgCreateDocfileForLocaleOnILockBytes) (ILockBytes * plkbyt, DWORD grfMode, DWORD reserved, LCID lcid, IStorage ** ppstgOpen ) PURE;
STDMETHOD(QueryFileStampAndLocale)(const WCHAR *pwcsName, DWORD *pFileStamp, DWORD *pFileLocale) PURE; STDMETHOD(QueryLockByteStampAndLocale)(ILockBytes * plkbyt, DWORD *pFileStamp, DWORD *pFileLocale) PURE; };
inline IITITStorageEx::IITITStorageEx(CITUnknown *pBackObj, IUnknown *punkOuter) : IITITStorage(pBackObj, punkOuter) { }
interface IITParseDisplayName : public CImpITUnknown { public:
IITParseDisplayName(CITUnknown *pBackObj, IUnknown *punkOuter); // IParseDisplayName methods:
virtual HRESULT STDMETHODCALLTYPE ParseDisplayName( /* [unique][in] */ IBindCtx __RPC_FAR *pbc, /* [in] */ LPOLESTR pszDisplayName, /* [out] */ ULONG __RPC_FAR *pchEaten, /* [out] */ IMoniker __RPC_FAR *__RPC_FAR *ppmkOut) = 0; };
inline IITParseDisplayName::IITParseDisplayName(CITUnknown *pBackObj, IUnknown *punkOuter) : CImpITUnknown(pBackObj, punkOuter) { }
interface IITFSStorage : public CImpITUnknown { public:
IITFSStorage(CITUnknown *pBackObj, IUnknown *punkOuter); // IFSStorage methods
virtual HRESULT STDMETHODCALLTYPE FSCreateStorage (const WCHAR * pwcsName, DWORD grfMode, IStorage ** ppstgOpen) = 0;
virtual HRESULT STDMETHODCALLTYPE FSOpenStorage (const WCHAR * pwcsName, DWORD grfMode, IStorage ** ppstgOpen) = 0;
virtual HRESULT STDMETHODCALLTYPE FSCreateStream (const WCHAR *pwcsName, DWORD grfMode, IStream **ppStrm) = 0; virtual HRESULT STDMETHODCALLTYPE FSCreateTemporaryStream(IStream **ppStrm) = 0; virtual HRESULT STDMETHODCALLTYPE FSOpenStream (const WCHAR *pwcsName, DWORD grfMode, IStream **ppStrm) = 0; virtual HRESULT STDMETHODCALLTYPE FSCreateLockBytes (const WCHAR *pwcsName, DWORD grfMode, ILockBytes **ppLkb) = 0; virtual HRESULT STDMETHODCALLTYPE FSCreateTemporaryLockBytes(ILockBytes **ppLkb) = 0; virtual HRESULT STDMETHODCALLTYPE FSOpenLockBytes (const WCHAR *pwcsName, DWORD grfMode, ILockBytes **ppLkb) = 0;
virtual HRESULT STDMETHODCALLTYPE FSStgSetTimes (WCHAR const * lpszName, FILETIME const * pctime, FILETIME const * patime, FILETIME const * pmtime ) = 0; };
inline IITFSStorage::IITFSStorage (CITUnknown *pBackObj, IUnknown *punkOuter) : CImpITUnknown(pBackObj, punkOuter) { }
typedef struct _PathInfo { union { struct { CULINT ullcbOffset; // Byte offset location of stream within lockbyte segment
CULINT ullcbData; // Length of the stream in bytes
}; CLSID clsidStorage; // Class ID for a Storage object
}; // NB: Storage paths end with '/'
UINT uStateBits; // State bits for storages
UINT iLockedBytesSegment; // Index to the containing lockbyte segment
UINT cUnrecordedChanges; ULONG cwcStreamPath; // Length of path string name
WCHAR awszStreamPath[MAX_PATH]; // Path string
} PathInfo, *PPathInfo;
interface IITLockBytes : public CImpITUnknown { public:
IITLockBytes(CITUnknown *pBackObj, IUnknown *punkOuter, WCHAR *pwcsName);
static HRESULT CopyLockBytes (ILockBytes *pilbSrc, CULINT ullBaseSrc, CULINT ullLimitSrc, ILockBytes *pilbDest, CULINT ullBaseDest );
BOOL IsNamed(const WCHAR *pwszFileName); enum { CB_COPY_BUFFER = 8192 }; virtual /* [local] */ HRESULT STDMETHODCALLTYPE ReadAt( /* [in] */ ULARGE_INTEGER ulOffset, /* [length_is][size_is][out] */ void __RPC_FAR *pv, /* [in] */ ULONG cb, /* [out] */ ULONG __RPC_FAR *pcbRead) = 0; virtual /* [local] */ HRESULT STDMETHODCALLTYPE WriteAt( /* [in] */ ULARGE_INTEGER ulOffset, /* [size_is][in] */ const void __RPC_FAR *pv, /* [in] */ ULONG cb, /* [out] */ ULONG __RPC_FAR *pcbWritten) = 0; virtual HRESULT STDMETHODCALLTYPE Flush( void) = 0; virtual HRESULT STDMETHODCALLTYPE SetSize( /* [in] */ ULARGE_INTEGER cb) = 0; virtual HRESULT STDMETHODCALLTYPE LockRegion( /* [in] */ ULARGE_INTEGER libOffset, /* [in] */ ULARGE_INTEGER cb, /* [in] */ DWORD dwLockType) = 0; virtual HRESULT STDMETHODCALLTYPE UnlockRegion( /* [in] */ ULARGE_INTEGER libOffset, /* [in] */ ULARGE_INTEGER cb, /* [in] */ DWORD dwLockType) = 0; virtual HRESULT STDMETHODCALLTYPE Stat( /* [out] */ STATSTG __RPC_FAR *pstatstg, /* [in] */ DWORD grfStatFlag) = 0;
private:
WCHAR *m_pwcsName; };
inline IITLockBytes::IITLockBytes(CITUnknown *pBackObj, IUnknown *punkOuter, WCHAR *pwcsName) : CImpITUnknown(pBackObj, punkOuter) { m_pwcsName = pwcsName; } inline BOOL IITLockBytes::IsNamed(const WCHAR *pwszFileName) { return !wcsicmp_0x0409(pwszFileName, m_pwcsName); }
interface IITPersist : public CImpITUnknown { public:
IITPersist(CITUnknown *pBackObj, IUnknown *punkOuter); virtual HRESULT STDMETHODCALLTYPE GetClassID( /* [out] */ CLSID __RPC_FAR *pClassID) = 0; };
inline IITPersist::IITPersist(CITUnknown *pBackObj, IUnknown *punkOuter) : CImpITUnknown(pBackObj, punkOuter) { } interface IITPersistStream : public IITPersist { public:
IITPersistStream(CITUnknown *pBackObj, IUnknown *punkOuter); virtual HRESULT STDMETHODCALLTYPE IsDirty( void) = 0; virtual HRESULT STDMETHODCALLTYPE Load( /* [unique][in] */ IStream __RPC_FAR *pStm) = 0; virtual HRESULT STDMETHODCALLTYPE Save( /* [unique][in] */ IStream __RPC_FAR *pStm, /* [in] */ BOOL fClearDirty) = 0; virtual HRESULT STDMETHODCALLTYPE GetSizeMax( /* [out] */ ULARGE_INTEGER __RPC_FAR *pcbSize) = 0; };
inline IITPersistStream::IITPersistStream(CITUnknown *pBackObj, IUnknown *punkOuter) : IITPersist(pBackObj, punkOuter) { }
interface IITMoniker : public IITPersistStream { public: IITMoniker(CITUnknown *pBackObj, IUnknown *punkOuter);
// IMoniker methods:
virtual /* [local] */ HRESULT STDMETHODCALLTYPE BindToObject( /* [unique][in] */ IBindCtx __RPC_FAR *pbc, /* [unique][in] */ IMoniker __RPC_FAR *pmkToLeft, /* [in] */ REFIID riidResult, /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvResult) = 0; virtual /* [local] */ HRESULT STDMETHODCALLTYPE BindToStorage( /* [unique][in] */ IBindCtx __RPC_FAR *pbc, /* [unique][in] */ IMoniker __RPC_FAR *pmkToLeft, /* [in] */ REFIID riid, /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObj) = 0; virtual HRESULT STDMETHODCALLTYPE Reduce( /* [unique][in] */ IBindCtx __RPC_FAR *pbc, /* [in] */ DWORD dwReduceHowFar, /* [unique][out][in] */ IMoniker __RPC_FAR *__RPC_FAR *ppmkToLeft, /* [out] */ IMoniker __RPC_FAR *__RPC_FAR *ppmkReduced) = 0; virtual HRESULT STDMETHODCALLTYPE ComposeWith( /* [unique][in] */ IMoniker __RPC_FAR *pmkRight, /* [in] */ BOOL fOnlyIfNotGeneric, /* [out] */ IMoniker __RPC_FAR *__RPC_FAR *ppmkComposite) = 0; virtual HRESULT STDMETHODCALLTYPE Enum( /* [in] */ BOOL fForward, /* [out] */ IEnumMoniker __RPC_FAR *__RPC_FAR *ppenumMoniker) = 0; virtual HRESULT STDMETHODCALLTYPE IsEqual( /* [unique][in] */ IMoniker __RPC_FAR *pmkOtherMoniker) = 0; virtual HRESULT STDMETHODCALLTYPE Hash( /* [out] */ DWORD __RPC_FAR *pdwHash) = 0; virtual HRESULT STDMETHODCALLTYPE IsRunning( /* [unique][in] */ IBindCtx __RPC_FAR *pbc, /* [unique][in] */ IMoniker __RPC_FAR *pmkToLeft, /* [unique][in] */ IMoniker __RPC_FAR *pmkNewlyRunning) = 0; virtual HRESULT STDMETHODCALLTYPE GetTimeOfLastChange( /* [unique][in] */ IBindCtx __RPC_FAR *pbc, /* [unique][in] */ IMoniker __RPC_FAR *pmkToLeft, /* [out] */ FILETIME __RPC_FAR *pFileTime) = 0; virtual HRESULT STDMETHODCALLTYPE Inverse( /* [out] */ IMoniker __RPC_FAR *__RPC_FAR *ppmk) = 0; virtual HRESULT STDMETHODCALLTYPE CommonPrefixWith( /* [unique][in] */ IMoniker __RPC_FAR *pmkOther, /* [out] */ IMoniker __RPC_FAR *__RPC_FAR *ppmkPrefix) = 0; virtual HRESULT STDMETHODCALLTYPE RelativePathTo( /* [unique][in] */ IMoniker __RPC_FAR *pmkOther, /* [out] */ IMoniker __RPC_FAR *__RPC_FAR *ppmkRelPath) = 0; virtual HRESULT STDMETHODCALLTYPE GetDisplayName( /* [unique][in] */ IBindCtx __RPC_FAR *pbc, /* [unique][in] */ IMoniker __RPC_FAR *pmkToLeft, /* [out] */ LPOLESTR __RPC_FAR *ppszDisplayName) = 0; virtual HRESULT STDMETHODCALLTYPE ParseDisplayName( /* [unique][in] */ IBindCtx __RPC_FAR *pbc, /* [unique][in] */ IMoniker __RPC_FAR *pmkToLeft, /* [in] */ LPOLESTR pszDisplayName, /* [out] */ ULONG __RPC_FAR *pchEaten, /* [out] */ IMoniker __RPC_FAR *__RPC_FAR *ppmkOut) = 0; virtual HRESULT STDMETHODCALLTYPE IsSystemMoniker( /* [out] */ DWORD __RPC_FAR *pdwMksys) = 0; };
inline IITMoniker::IITMoniker(CITUnknown *pBackObj, IUnknown *punkOuter) : IITPersistStream(pBackObj, punkOuter) { }
interface IITPersistStreamInit : public IITPersist { public:
IITPersistStreamInit(CITUnknown *pBackObj, IUnknown *punkOuter); virtual HRESULT STDMETHODCALLTYPE IsDirty( void) = 0; virtual HRESULT STDMETHODCALLTYPE Load( /* [in] */ LPSTREAM pStm) = 0; virtual HRESULT STDMETHODCALLTYPE Save( /* [in] */ LPSTREAM pStm, /* [in] */ BOOL fClearDirty) = 0; virtual HRESULT STDMETHODCALLTYPE GetSizeMax( /* [out] */ ULARGE_INTEGER __RPC_FAR *pCbSize) = 0; virtual HRESULT STDMETHODCALLTYPE InitNew( void) = 0; };
inline IITPersistStreamInit::IITPersistStreamInit(CITUnknown *pBackObj, IUnknown *punkOuter) : IITPersist(pBackObj, punkOuter) { }
interface IITSequentialStream : public CImpITUnknown { public:
IITSequentialStream(CITUnknown *pBackObj, IUnknown *punkOuter);
virtual /* [local] */ HRESULT STDMETHODCALLTYPE Read( /* [length_is][size_is][out] */ void __RPC_FAR *pv, /* [in] */ ULONG cb, /* [out] */ ULONG __RPC_FAR *pcbRead) = 0; virtual /* [local] */ HRESULT STDMETHODCALLTYPE Write( /* [size_is][in] */ const void __RPC_FAR *pv, /* [in] */ ULONG cb, /* [out] */ ULONG __RPC_FAR *pcbWritten) = 0; };
inline IITSequentialStream::IITSequentialStream(CITUnknown *pBackObj, IUnknown *punkOuter) : CImpITUnknown(pBackObj, punkOuter) { }
interface IITStream : public IITSequentialStream { public:
IITStream(CITUnknown *pBackObj, IUnknown *punkOuter);
virtual /* [local] */ HRESULT STDMETHODCALLTYPE Seek( /* [in] */ LARGE_INTEGER dlibMove, /* [in] */ DWORD dwOrigin, /* [out] */ ULARGE_INTEGER __RPC_FAR *plibNewPosition) = 0; virtual HRESULT STDMETHODCALLTYPE SetSize( /* [in] */ ULARGE_INTEGER libNewSize) = 0; virtual /* [local] */ HRESULT STDMETHODCALLTYPE CopyTo( /* [unique][in] */ IStream __RPC_FAR *pstm, /* [in] */ ULARGE_INTEGER cb, /* [out] */ ULARGE_INTEGER __RPC_FAR *pcbRead, /* [out] */ ULARGE_INTEGER __RPC_FAR *pcbWritten) = 0; virtual HRESULT STDMETHODCALLTYPE Commit( /* [in] */ DWORD grfCommitFlags) = 0; virtual HRESULT STDMETHODCALLTYPE Revert( void) = 0; virtual HRESULT STDMETHODCALLTYPE LockRegion( /* [in] */ ULARGE_INTEGER libOffset, /* [in] */ ULARGE_INTEGER cb, /* [in] */ DWORD dwLockType) = 0; virtual HRESULT STDMETHODCALLTYPE UnlockRegion( /* [in] */ ULARGE_INTEGER libOffset, /* [in] */ ULARGE_INTEGER cb, /* [in] */ DWORD dwLockType) = 0; virtual HRESULT STDMETHODCALLTYPE Stat( /* [out] */ STATSTG __RPC_FAR *pstatstg, /* [in] */ DWORD grfStatFlag) = 0; virtual HRESULT STDMETHODCALLTYPE Clone( /* [out] */ IStream __RPC_FAR *__RPC_FAR *ppstm) = 0; };
inline IITStream::IITStream(CITUnknown *pBackObj, IUnknown *punkOuter) : IITSequentialStream(pBackObj, punkOuter) { }
interface IITStreamITEx : public IITStream { public:
IITStreamITEx(CITUnknown *pBackObj, IUnknown *punkOuter);
virtual HRESULT STDMETHODCALLTYPE SetDataSpaceName(const WCHAR * pwcsDataSpaceName) = 0; virtual HRESULT STDMETHODCALLTYPE GetDataSpaceName( WCHAR **ppwcsDataSpaceName) = 0;
virtual HRESULT STDMETHODCALLTYPE Flush() = 0;
};
inline IITStreamITEx::IITStreamITEx(CITUnknown *pBackObj, IUnknown *punkOuter) : IITStream(pBackObj, punkOuter) { }
interface IIT_IStorage : public CImpITUnknown { public:
IIT_IStorage(CITUnknown *pBackObj, IUnknown *punkOuter, WCHAR *pwcsName);
BOOL IsNamed(const WCHAR *pwszFileName);
virtual HRESULT STDMETHODCALLTYPE CreateStream( /* [string][in] */ const OLECHAR __RPC_FAR *pwcsName, /* [in] */ DWORD grfMode, /* [in] */ DWORD reserved1, /* [in] */ DWORD reserved2, /* [out] */ IStream __RPC_FAR *__RPC_FAR *ppstm) = 0; virtual /* [local] */ HRESULT STDMETHODCALLTYPE OpenStream( /* [string][in] */ const OLECHAR __RPC_FAR *pwcsName, /* [unique][in] */ void __RPC_FAR *reserved1, /* [in] */ DWORD grfMode, /* [in] */ DWORD reserved2, /* [out] */ IStream __RPC_FAR *__RPC_FAR *ppstm) = 0; virtual HRESULT STDMETHODCALLTYPE CreateStorage( /* [string][in] */ const OLECHAR __RPC_FAR *pwcsName, /* [in] */ DWORD grfMode, /* [in] */ DWORD dwStgFmt, /* [in] */ DWORD reserved2, /* [out] */ IStorage __RPC_FAR *__RPC_FAR *ppstg) = 0; virtual HRESULT STDMETHODCALLTYPE OpenStorage( /* [string][unique][in] */ const OLECHAR __RPC_FAR *pwcsName, /* [unique][in] */ IStorage __RPC_FAR *pstgPriority, /* [in] */ DWORD grfMode, /* [unique][in] */ SNB snbExclude, /* [in] */ DWORD reserved, /* [out] */ IStorage __RPC_FAR *__RPC_FAR *ppstg) = 0; virtual HRESULT STDMETHODCALLTYPE CopyTo( /* [in] */ DWORD ciidExclude, /* [size_is][unique][in] */ const IID __RPC_FAR *rgiidExclude, /* [unique][in] */ SNB snbExclude, /* [unique][in] */ IStorage __RPC_FAR *pstgDest) = 0; virtual HRESULT STDMETHODCALLTYPE MoveElementTo( /* [string][in] */ const OLECHAR __RPC_FAR *pwcsName, /* [unique][in] */ IStorage __RPC_FAR *pstgDest, /* [string][in] */ const OLECHAR __RPC_FAR *pwcsNewName, /* [in] */ DWORD grfFlags) = 0; virtual HRESULT STDMETHODCALLTYPE Commit( /* [in] */ DWORD grfCommitFlags) = 0; virtual HRESULT STDMETHODCALLTYPE Revert( void) = 0; virtual /* [local] */ HRESULT STDMETHODCALLTYPE EnumElements( /* [in] */ DWORD reserved1, /* [size_is][unique][in] */ void __RPC_FAR *reserved2, /* [in] */ DWORD reserved3, /* [out] */ IEnumSTATSTG __RPC_FAR *__RPC_FAR *ppenum) = 0; virtual HRESULT STDMETHODCALLTYPE DestroyElement( /* [string][in] */ const OLECHAR __RPC_FAR *pwcsName) = 0; virtual HRESULT STDMETHODCALLTYPE RenameElement( /* [string][in] */ const OLECHAR __RPC_FAR *pwcsOldName, /* [string][in] */ const OLECHAR __RPC_FAR *pwcsNewName) = 0; virtual HRESULT STDMETHODCALLTYPE SetElementTimes( /* [string][in] */ const OLECHAR __RPC_FAR *pwcsName, /* [in] */ const FILETIME __RPC_FAR *pctime, /* [in] */ const FILETIME __RPC_FAR *patime, /* [in] */ const FILETIME __RPC_FAR *pmtime) = 0; virtual HRESULT STDMETHODCALLTYPE SetClass( /* [in] */ REFCLSID clsid) = 0; virtual HRESULT STDMETHODCALLTYPE SetStateBits( /* [in] */ DWORD grfStateBits, /* [in] */ DWORD grfMask) = 0; virtual HRESULT STDMETHODCALLTYPE Stat( /* [out] */ STATSTG __RPC_FAR *pstatstg, /* [in] */ DWORD grfStatFlag) = 0;
private:
WCHAR *m_pwcsName; }; inline IIT_IStorage::IIT_IStorage(CITUnknown *pBackObj, IUnknown *punkOuter, WCHAR *pwcsName) : CImpITUnknown(pBackObj, punkOuter) { m_pwcsName = pwcsName; }
inline BOOL IIT_IStorage::IsNamed(const WCHAR *pwszFileName) { return !wcsicmp_0x0409(pwszFileName, m_pwcsName); }
interface IIT_IStorageITEx : public IIT_IStorage { public:
IIT_IStorageITEx(CITUnknown *pBackObj, IUnknown *punkOuter, WCHAR *pwcsName);
virtual HRESULT STDMETHODCALLTYPE GetCheckSum(ULARGE_INTEGER *puli) = 0; virtual HRESULT STDMETHODCALLTYPE CreateStreamITEx (const WCHAR * pwcsName, const WCHAR *pwcsDataSpaceName, DWORD grfMode, DWORD reserved1, DWORD reserved2, IStreamITEx ** ppstm ) = 0; virtual HRESULT STDMETHODCALLTYPE OpenStreamITEx (const WCHAR * pwcsName, void * reserved1, DWORD grfMode, DWORD reserved2, IStreamITEx ** ppstm) = 0; };
inline IIT_IStorageITEx::IIT_IStorageITEx(CITUnknown *pBackObj, IUnknown *punkOuter, WCHAR *pwcsName) : IIT_IStorage(pBackObj, punkOuter, pwcsName) { }
#undef GetFreeSpace // To avoid a collision with the GetFreeSpace function below
interface IITFileSystem; // A forward declaration
interface IFreeList : public IPersistStreamInit { virtual HRESULT STDMETHODCALLTYPE InitNew(IITFileSystem *pITFS, CULINT cbBias) = 0; virtual HRESULT STDMETHODCALLTYPE InitNew(IITFileSystem *pITFS, CULINT cbBias, UINT cEntriesMax) = 0; virtual HRESULT STDMETHODCALLTYPE InitLoad(IITFileSystem *pITFS) = 0; virtual HRESULT STDMETHODCALLTYPE LazyInitNew(IITFileSystem *pITFS) = 0; virtual HRESULT STDMETHODCALLTYPE RecordFreeList() = 0;
virtual HRESULT STDMETHODCALLTYPE PutFreeSpace(CULINT ullBase, CULINT ullCB) = 0; virtual HRESULT STDMETHODCALLTYPE GetFreeSpace(CULINT *pullBase, CULINT *pullcb) = 0; virtual HRESULT STDMETHODCALLTYPE GetFreeSpaceAt(CULINT ullBase, CULINT *pullcb) = 0; virtual HRESULT STDMETHODCALLTYPE GetEndingFreeSpace (CULINT *pullBase, CULINT *pullcb) = 0; virtual HRESULT STDMETHODCALLTYPE GetStatistics (CULINT *pcbLost, CULINT *pcbSpace) = 0; };
DECLARE_INTERFACE_(IITFreeList, IITPersistStreamInit) { public:
IITFreeList(CITUnknown *pBackObj, IUnknown *punkOuter);
BEGIN_INTERFACE
virtual HRESULT STDMETHODCALLTYPE InitNew(IITFileSystem *pITFS, CULINT cbBias) = 0; virtual HRESULT STDMETHODCALLTYPE InitNew(IITFileSystem *pITFS, CULINT cbBias, UINT cEntriesMax) = 0; virtual HRESULT STDMETHODCALLTYPE InitLoad(IITFileSystem *pITFS) = 0; virtual HRESULT STDMETHODCALLTYPE LazyInitNew(IITFileSystem *pITFS) = 0; virtual HRESULT STDMETHODCALLTYPE RecordFreeList() = 0;
virtual HRESULT STDMETHODCALLTYPE PutFreeSpace(CULINT ullBase, CULINT ullCB) = 0; virtual HRESULT STDMETHODCALLTYPE GetFreeSpace(CULINT *pullBase, CULINT *pullcb) = 0; virtual HRESULT STDMETHODCALLTYPE GetFreeSpaceAt(CULINT ullBase, CULINT *pullcb) = 0; virtual HRESULT STDMETHODCALLTYPE GetEndingFreeSpace (CULINT *pullBase, CULINT *pullcb) = 0; virtual HRESULT STDMETHODCALLTYPE GetStatistics (CULINT *pcbLost, CULINT *pcbSpace) = 0;
virtual HRESULT STDMETHODCALLTYPE SetFreeListEmpty() = 0; virtual HRESULT STDMETHODCALLTYPE SetSpaceSize(ULARGE_INTEGER uliCbSpace) = 0;
END_INTERFACE };
typedef IITFreeList *PIFreeList;
inline IITFreeList::IITFreeList(CITUnknown *pBackObj, IUnknown *punkOuter) :IITPersistStreamInit(pBackObj, punkOuter) {
}
interface IEntryHandler : public IUnknown { virtual HRESULT STDMETHODCALLTYPE BindInstanceData(LCID lcidInstance, IStream *pStrmInstance) = 0; virtual HRESULT STDMETHODCALLTYPE SkipEncodedKey (const BYTE **ppbEncodedKey) = 0; virtual HRESULT STDMETHODCALLTYPE SkipEncodedEntry(const BYTE **ppbEncodedRecord) = 0; virtual HRESULT STDMETHODCALLTYPE EncodeEntry(PVOID pvEntry, PBYTE pbEncodeBuffer, UINT cbEncodeBuffer, PUINT pcbEncodedEntry ) = 0; virtual HRESULT STDMETHODCALLTYPE DecodeEntry(PVOID pvEntry, const BYTE **ppbEncodedEntry) = 0; virtual HRESULT STDMETHODCALLTYPE ScanLeafSet(PVOID pvKey, const BYTE *pbStart, const BYTE *pbLimit, BYTE **pbEntry, BYTE **pbEntryLimit ) = 0; virtual HRESULT STDMETHODCALLTYPE ScanInternalSet(PVOID pvKey, const BYTE *pbStart, const BYTE *pbLimit, BYTE **pbKey, BYTE **pbKeyLimit ) = 0; };
interface IITEntryHandler : public CImpITUnknown { IITEntryHandler(CITUnknown *pBackObj, IUnknown *punkOuter); virtual HRESULT STDMETHODCALLTYPE BindInstanceData(IStream *pStrmInstance) = 0; virtual HRESULT STDMETHODCALLTYPE SkipEncodedKey (const BYTE **ppbEncodedKey) = 0; virtual HRESULT STDMETHODCALLTYPE SkipEncodedEntry(const BYTE **ppbEncodedRecord) = 0; virtual HRESULT STDMETHODCALLTYPE EncodeEntry(PVOID pvEntry, PBYTE pbEncodeBuffer, UINT cbEncodeBuffer, PUINT pcbEncodedEntry ) = 0; virtual HRESULT STDMETHODCALLTYPE DecodeEntry(PVOID pvEntry, const BYTE **ppbEncodedEntry); virtual HRESULT STDMETHODCALLTYPE ScanLeafSet(PVOID pvKey, const BYTE *pbStart, const BYTE *pbLimit, BYTE **pbEntry, BYTE **pbEntryLimit ) = 0; virtual HRESULT STDMETHODCALLTYPE ScanInternalSet(PVOID pvKey, const BYTE *pbStart, const BYTE *pbLimit, BYTE **pbKey, BYTE **pbKeyLimit ) = 0; };
inline IITEntryHandler::IITEntryHandler(CITUnknown *pBackObj, IUnknown *punkOuter) : CImpITUnknown(pBackObj, punkOuter) { }
interface IPathManger : public IPersist { public:
virtual HRESULT STDMETHODCALLTYPE FlushToLockBytes() = 0; virtual HRESULT STDMETHODCALLTYPE FindEntry (PPathInfo pSI ) = 0; virtual HRESULT STDMETHODCALLTYPE CreateEntry(PPathInfo pSINew, PPathInfo pSIOld, BOOL fReplace ) = 0; virtual HRESULT STDMETHODCALLTYPE DeleteEntry(PPathInfo pSI ) = 0; virtual HRESULT STDMETHODCALLTYPE UpdateEntry(PPathInfo pSI ) = 0; virtual HRESULT STDMETHODCALLTYPE EnumFromObject (IUnknown *punkOuter, const WCHAR *pwszPrefix, UINT cwcPrefix, REFIID riid, PVOID *ppv ) = 0; };
interface IITPathManager : public IITPersist { public:
IITPathManager(CITUnknown *pBackObj, IUnknown *punkOuter);
virtual HRESULT STDMETHODCALLTYPE FlushToLockBytes() = 0; virtual HRESULT STDMETHODCALLTYPE FindEntry (PPathInfo pSI ) = 0; virtual HRESULT STDMETHODCALLTYPE CreateEntry(PPathInfo pSINew, PPathInfo pSIOld, BOOL fReplace ) = 0; virtual HRESULT STDMETHODCALLTYPE DeleteEntry(PPathInfo pSI ) = 0; virtual HRESULT STDMETHODCALLTYPE UpdateEntry(PPathInfo pSI ) = 0; virtual HRESULT STDMETHODCALLTYPE EnumFromObject (IUnknown *punkOuter, const WCHAR *pwszPrefix, UINT cwcPrefix, REFIID riid, PVOID *ppv ) = 0; virtual HRESULT STDMETHODCALLTYPE GetPathDB(IStreamITEx *pTempPDBStrm, BOOL fCompact) = 0; virtual HRESULT STDMETHODCALLTYPE ForceClearDirty() = 0; };
inline IITPathManager::IITPathManager(CITUnknown *pBackObj, IUnknown *punkOuter) : IITPersist(pBackObj, punkOuter) { }
interface IITEnumSTATSTG : public CImpITUnknown { public:
IITEnumSTATSTG(CITUnknown *pBackObj, IUnknown *punkOuter);
virtual /* [local] */ HRESULT STDMETHODCALLTYPE Next( /* [in] */ ULONG celt, /* [in] */ STATSTG __RPC_FAR *rgelt, /* [out] */ ULONG __RPC_FAR *pceltFetched) = 0; virtual HRESULT STDMETHODCALLTYPE Skip( /* [in] */ ULONG celt) = 0; virtual HRESULT STDMETHODCALLTYPE Reset( void) = 0; virtual HRESULT STDMETHODCALLTYPE Clone( /* [out] */ IEnumSTATSTG __RPC_FAR *__RPC_FAR *ppenum) = 0;
#if 1
virtual HRESULT STDMETHODCALLTYPE GetNextEntryInSeq(/* [in] */ULONG celt, /* [out] */ PathInfo *rgelt, /* [out] */ ULONG *pceltFetched) = 0; virtual HRESULT STDMETHODCALLTYPE GetFirstEntryInSeq( /* [out] */ PathInfo *rgelt) = 0; #endif
};
inline IITEnumSTATSTG::IITEnumSTATSTG(CITUnknown *pBackObj, IUnknown *punkOuter) : CImpITUnknown(pBackObj, punkOuter) { }
class CImpITUnknown;
interface IITFileSystem : public CImpITUnknown { public:
IITFileSystem(CITUnknown *pBackObj, IUnknown *punkOuter);
// Interface methods
virtual HRESULT __stdcall DeactivateSpace(UINT iSpace) = 0;
virtual CITCriticalSection& CriticalSection() = 0;
virtual HRESULT __stdcall FlushToLockBytes() = 0;
virtual HRESULT __stdcall CreateStorage (IUnknown *pUnkOuter, const WCHAR *pwcsPathPrefix, DWORD grfMode, IStorageITEx **ppStg) = 0; virtual HRESULT __stdcall OpenStorage (IUnknown *pUnkOuter, const WCHAR *pwcsPath, DWORD grfMode, IStorageITEx **ppstg) = 0; virtual HRESULT __stdcall CreateLockBytes(IUnknown *pUnkOuter, const WCHAR *pwcsPath, const WCHAR *pwcsDataSpaceName, BOOL fOverwrite, ILockBytes **ppLKB) = 0;
virtual HRESULT __stdcall OpenLockBytes(IUnknown *pUnkOuter, const WCHAR *pwcsPath, ILockBytes **ppLKB) = 0; virtual HRESULT __stdcall CreateStream(IUnknown *pUnkOuter, const WCHAR *pwcsPath, DWORD grfMode, IStreamITEx **ppStrm) = 0;
virtual HRESULT __stdcall CreateStream (IUnknown *pUnkOuter, const WCHAR * pwcsName, const WCHAR *pwcsDataSpaceName, DWORD grfMode, IStreamITEx ** ppstm ) = 0;
virtual HRESULT __stdcall OpenStream(IUnknown *pUnkOuter, const WCHAR *pwcsPath, DWORD grfMode, IStreamITEx **ppStream) = 0;
virtual HRESULT __stdcall ConnectStorage(CImpITUnknown *pStg) = 0;
virtual HRESULT __stdcall ConnectLockBytes(CImpITUnknown *pStg) = 0; virtual HRESULT __stdcall DeleteItem(WCHAR const *pwcsName) = 0;
virtual HRESULT __stdcall RenameItem(WCHAR const *pwcsOldName, WCHAR const *pwcsNewName) = 0;
virtual HRESULT __stdcall UpdatePathInfo(PathInfo *pPathInfo) = 0;
virtual HRESULT __stdcall SetITFSTimes(FILETIME const * pctime, FILETIME const * patime, FILETIME const * pmtime ) = 0;
virtual HRESULT __stdcall GetITFSTimes(FILETIME * pctime, FILETIME * patime, FILETIME * pmtime ) = 0;
virtual HRESULT __stdcall ReallocEntry(PathInfo *pPathInfo, CULINT ullcbNew, BOOL fCopyContent ) = 0;
virtual HRESULT __stdcall ReallocInPlace(PathInfo *pPathInfo, CULINT ullcbNew) = 0;
virtual HRESULT __stdcall EnumeratePaths(WCHAR const *pwcsPathPrefix, IEnumSTATSTG **ppEnumStatStg ) = 0;
virtual HRESULT __stdcall IsWriteable() = 0;
virtual HRESULT __stdcall FSObjectReleased() = 0; virtual BOOL __stdcall IsCompacting() = 0;
virtual HRESULT __stdcall QueryFileStampAndLocale(DWORD *pFileStamp, DWORD *pFileLocale ) = 0; virtual HRESULT __stdcall CountWrites() = 0; };
inline IITFileSystem::IITFileSystem(CITUnknown *pBackObj, IUnknown *punkOuter) : CImpITUnknown(pBackObj, punkOuter) { }
// Need to fix the interface declarations below to reflect the
// revised design for managing transforms and data spaces.
/*
// {A55895FC-89E1-11d0-9E14-00A0C922E6EC}
DEFINE_GUID(IID_ITransformServices, 0xa55895fc, 0x89e1, 0x11d0, 0x9e, 0x14, 0x0, 0xa0, 0xc9, 0x22, 0xe6, 0xec); */
interface IITTransformServices : public CImpITUnknown { public:
IITTransformServices(CITUnknown *pBackObj, IUnknown *punkOuter); virtual HRESULT STDMETHODCALLTYPE PerTransformStorage (REFCLSID rclsidXForm, IStorage **ppStg) = 0;
virtual HRESULT STDMETHODCALLTYPE PerTransformInstanceStorage (REFCLSID rclsidXForm, const WCHAR *pwszDataSpace, IStorage **ppStg) = 0;
virtual HRESULT STDMETHODCALLTYPE SetKeys (REFCLSID rclsidXForm, const WCHAR *pwszDataSpace, PBYTE pbReadKey, UINT cbReadKey, PBYTE pbWriteKey, UINT cbWriteKey ) = 0;
virtual HRESULT STDMETHODCALLTYPE CreateTemporaryStream(IStream **ppStrm) = 0; };
inline IITTransformServices::IITTransformServices(CITUnknown *pBackObj, IUnknown *punkOuter) : CImpITUnknown(pBackObj, punkOuter) { }
/*
// {7C01FD0C-7BAA-11d0-9E0C-00A0C922E6EC}
DEFINE_GUID(IID_ITransform, 0x7c01fd0c, 0x7baa, 0x11d0, 0x9e, 0xc, 0x0, 0xa0, 0xc9, 0x22, 0xe6, 0xec); */ interface IITTransformFactory : public CImpITUnknown { public:
IITTransformFactory(CITUnknown *pBackObj, IUnknown *punkOuter); virtual HRESULT STDMETHODCALLTYPE DefaultControlData (XformControlData **ppXFCD) = 0;
virtual HRESULT STDMETHODCALLTYPE CreateTransformInstance (ITransformInstance *pXFormMedium, // Container data span for transformed data
ULARGE_INTEGER cbUntransformedSize, // Untransformed size of data
PXformControlData pXFCD, // Control data for this instance
const CLSID *rclsidXForm, // Transform Class ID
const WCHAR *pwszDataSpaceName, // Data space name for this instance
ITransformServices *pXformServices, // Utility routines
IKeyInstance *pKeyManager, // Interface to get enciphering keys
ITransformInstance **ppTransformInstance // Out: Instance transform interface
) = 0; };
inline IITTransformFactory::IITTransformFactory(CITUnknown *pBackObj, IUnknown *punkOuter) : CImpITUnknown(pBackObj, punkOuter) { }
interface IITTransformInstance : public CImpITUnknown { public:
IITTransformInstance(CITUnknown *pBackObj, IUnknown *punkOuter);
virtual HRESULT STDMETHODCALLTYPE ReadAt (ULARGE_INTEGER ulOffset, void *pv, ULONG cb, ULONG *pcbRead, ImageSpan *pSpan ) = 0;
virtual HRESULT STDMETHODCALLTYPE WriteAt (ULARGE_INTEGER ulOffset, const void *pv, ULONG cb, ULONG *pcbWritten, ImageSpan *pSpan ) = 0;
virtual HRESULT STDMETHODCALLTYPE Flush() = 0;
virtual HRESULT STDMETHODCALLTYPE SpaceSize(ULARGE_INTEGER *puliSize) = 0;
// Note: SpaceSize returns the high water mark for the space. That is, the largest
// limit value (uliOffset + uliSize) for any transformed lockbytes created within
// the base (*pXLKB).
};
inline IITTransformInstance::IITTransformInstance(CITUnknown *pBackObj, IUnknown *punkOuter) : CImpITUnknown(pBackObj, punkOuter) { }
/*
// {7C01FD0E-7BAA-11d0-9E0C-00A0C922E6EC}
DEFINE_GUID(IID_ITransformedStream, 0x7c01fd0e, 0x7baa, 0x11d0, 0x9e, 0xc, 0x0, 0xa0, 0xc9, 0x22, 0xe6, 0xec); */
interface IITTransformedStream : public CImpITUnknown { public:
IITTransformedStream(CITUnknown *pBackObj, IUnknown *punkOuter); virtual HRESULT STDMETHODCALLTYPE GetXFormInfo (PUINT pcbSyncInterval, PUINT pcXforms, PUINT pcdwXformControlData, CLSID *paclsid, PXformControlData pxfcd, CLSID *pclsidCipher ) = 0;
virtual HRESULT STDMETHODCALLTYPE Import (IStorage *pStg, const WCHAR * pwszElementName) = 0;
virtual HRESULT STDMETHODCALLTYPE Export (IStorage *pStg, const WCHAR * pwszElementName) = 0;
virtual HRESULT STDMETHODCALLTYPE ImportSpace(IStorage *pStg) = 0; };
inline IITTransformedStream::IITTransformedStream(CITUnknown *pBackObj, IUnknown *punkOuter) : CImpITUnknown(pBackObj, punkOuter) { }
/*
// {7C01FD0F-7BAA-11d0-9E0C-00A0C922E6EC}
DEFINE_GUID(IID_ITransformManager, 0x7c01fd0f, 0x7baa, 0x11d0, 0x9e, 0xc, 0x0, 0xa0, 0xc9, 0x22, 0xe6, 0xec); */
interface IITTransformManager : public CImpITUnknown { public:
IITTransformManager(CITUnknown *pBackObj, IUnknown *punkOuter); virtual HRESULT STDMETHODCALLTYPE CreateTransformedStream (const WCHAR *pwszTransformedStream, UINT cbSyncInterval, UINT cXforms, const CLSID *paclsidXform, PXformControlData pxfcd, REFCLSID rclsidCipher, PBYTE pbEncipherKey, UINT cbEncipherKey, PBYTE pbDecipherKey, UINT cbDecipherKey, IITTransformedStream *pITCmpStrm ) = 0;
virtual HRESULT STDMETHODCALLTYPE OpenTransformedStream (const WCHAR *pwszTransformedStream, PBYTE pbEncipherKey, UINT cbEncipherKey, PBYTE pbDecipherKey, UINT cbDecipherKey, IITTransformedStream *pITCmpStrm ) = 0; virtual HRESULT STDMETHODCALLTYPE DiscardTransformedStream (const WCHAR *pwszTransformedStream) = 0;
virtual HRESULT STDMETHODCALLTYPE EnumTransformedStreams (IEnumSTATSTG ** ppenum) = 0; };
inline IITTransformManager::IITTransformManager(CITUnknown *pBackObj, IUnknown *punkOuter) : CImpITUnknown(pBackObj, punkOuter) { }
interface IOITnetProtocolRoot : public CImpITUnknown { public: IOITnetProtocolRoot(CITUnknown *pBackObj, IUnknown *punkOuter); virtual HRESULT STDMETHODCALLTYPE Start( /* [in] */ LPCWSTR szUrl, /* [in] */ IOInetProtocolSink __RPC_FAR *pOIProtSink, /* [in] */ IOInetBindInfo __RPC_FAR *pOIBindInfo, /* [in] */ DWORD grfSTI, /* [in] */ DWORD dwReserved) = 0; virtual HRESULT STDMETHODCALLTYPE Continue( /* [in] */ PROTOCOLDATA __RPC_FAR *pProtocolData) = 0; virtual HRESULT STDMETHODCALLTYPE Abort( /* [in] */ HRESULT hrReason, /* [in] */ DWORD dwOptions) = 0; virtual HRESULT STDMETHODCALLTYPE Terminate( /* [in] */ DWORD dwOptions) = 0; virtual HRESULT STDMETHODCALLTYPE Suspend( void) = 0; virtual HRESULT STDMETHODCALLTYPE Resume( void) = 0; };
inline IOITnetProtocolRoot::IOITnetProtocolRoot (CITUnknown *pBackObj, IUnknown *punkOuter) : CImpITUnknown(pBackObj, punkOuter) { }
interface IOITnetProtocol : public IOITnetProtocolRoot { public: IOITnetProtocol(CITUnknown *pBackObj, IUnknown *punkOuter);
virtual HRESULT STDMETHODCALLTYPE Read( /* [length_is][size_is][out] */ void __RPC_FAR *pv, /* [in] */ ULONG cb, /* [out] */ ULONG __RPC_FAR *pcbRead) = 0; virtual HRESULT STDMETHODCALLTYPE Seek( /* [in] */ LARGE_INTEGER dlibMove, /* [in] */ DWORD dwOrigin, /* [out] */ ULARGE_INTEGER __RPC_FAR *plibNewPosition) = 0; virtual HRESULT STDMETHODCALLTYPE LockRequest( /* [in] */ DWORD dwOptions) = 0; virtual HRESULT STDMETHODCALLTYPE UnlockRequest( void) = 0; };
inline IOITnetProtocol::IOITnetProtocol (CITUnknown *pBackObj, IUnknown *punkOuter) : IOITnetProtocolRoot(pBackObj, punkOuter) { }
interface IOITnetProtocolInfo : public CImpITUnknown { public: IOITnetProtocolInfo(CITUnknown *pBackObj, IUnknown *punkOuter);
virtual HRESULT STDMETHODCALLTYPE ParseUrl( /* [in] */ LPCWSTR pwzUrl, /* [in] */ PARSEACTION ParseAction, /* [in] */ DWORD dwParseFlags, /* [out] */ LPWSTR pwzResult, /* [in] */ DWORD cchResult, /* [out] */ DWORD __RPC_FAR *pcchResult, /* [in] */ DWORD dwReserved) = 0; virtual HRESULT STDMETHODCALLTYPE CombineUrl( /* [in] */ LPCWSTR pwzBaseUrl, /* [in] */ LPCWSTR pwzRelativeUrl, /* [in] */ DWORD dwCombineFlags, /* [out] */ LPWSTR pwzResult, /* [in] */ DWORD cchResult, /* [out] */ DWORD __RPC_FAR *pcchResult, /* [in] */ DWORD dwReserved) = 0; virtual HRESULT STDMETHODCALLTYPE CompareUrl( /* [in] */ LPCWSTR pwzUrl1, /* [in] */ LPCWSTR pwzUrl2, /* [in] */ DWORD dwCompareFlags) = 0; virtual HRESULT STDMETHODCALLTYPE QueryInfo( /* [in] */ LPCWSTR pwzUrl, /* [in] */ QUERYOPTION OueryOption, /* [in] */ DWORD dwQueryFlags, /* [size_is][out][in] */ LPVOID pBuffer, /* [in] */ DWORD cbBuffer, /* [out][in] */ DWORD __RPC_FAR *pcbBuf, /* [in] */ DWORD dwReserved) = 0; };
inline IOITnetProtocolInfo::IOITnetProtocolInfo (CITUnknown *pBackObj, IUnknown *punkOuter) : CImpITUnknown(pBackObj, punkOuter) { }
#endif // __ITIFACES_H__
|