XPSOF.H
资源名称:MSDN_VC98.zip [点击查看]
上传用户:bangxh
上传日期:2007-01-31
资源大小:42235k
文件大小:5k
源码类别:
Windows编程
开发平台:
Visual C++
- /*
- - X P S O F . H
- -
- * Purpose:
- * Wraps the StreamOnFile object to add buffering of the stream.
- * The wrappered version uses an in-memory buffer, or cache, to
- * reduce the number of actual Reads and Writes to the underlying
- * stream. The goal is, obviously, to improve performance.
- *
- * Copyright 1992-1995, Microsoft Corporation. All Rights Reserved.
- */
- #define XPSOF_BUFF_MAX ((ULONG) 1024)
- #define XPSOF_READ ((ULONG) 0x00000001)
- #define XPSOF_WRITE ((ULONG) 0x00000002)
- #define XPSOF_READWRITE ((ULONG) 0x00000003)
- /* Creates the wrapped SOF object */
- STDMETHODIMP HrWrapStreamOnFile(
- LPALLOCATEBUFFER lpAllocBuffer,
- LPFREEBUFFER lpFreeBuffer,
- ULONG ulFlags,
- LPSTREAM lpStream,
- LPSTREAM * lppWrappedStream);
- /* IStream Interface */
- #define MAPI_ISTREAM_METHODS(IPURE)
- MAPIMETHOD(Read)
- (THIS_ VOID HUGEP * lpv,
- ULONG cb,
- ULONG FAR * lpcbRead) IPURE;
- MAPIMETHOD(Write)
- (THIS_ VOID const HUGEP * lpv,
- ULONG cb,
- ULONG FAR * lpcbWritten) IPURE;
- MAPIMETHOD(Seek)
- (THIS_ LARGE_INTEGER libMove,
- DWORD dwOrigin,
- ULARGE_INTEGER FAR * lplibNewPosition) IPURE;
- MAPIMETHOD(SetSize)
- (THIS_ ULARGE_INTEGER libNewSize) IPURE;
- MAPIMETHOD(CopyTo)
- (THIS_ IStream FAR * lpstm,
- ULARGE_INTEGER cb,
- ULARGE_INTEGER FAR * lpcbRead,
- ULARGE_INTEGER FAR * lpcbWritten) IPURE;
- MAPIMETHOD(Commit)
- (THIS_ DWORD dwCommitFlags) IPURE;
- MAPIMETHOD(Revert)
- (THIS) IPURE;
- MAPIMETHOD(LockRegion)
- (THIS_ ULARGE_INTEGER libOffset,
- ULARGE_INTEGER cb,
- DWORD dwLockType) IPURE;
- MAPIMETHOD(UnlockRegion)
- (THIS_ ULARGE_INTEGER ulibOffset,
- ULARGE_INTEGER cb,
- DWORD dwLockType) IPURE;
- MAPIMETHOD(Stat)
- (THIS_ STATSTG FAR * lpstatstg,
- DWORD dwStatFlag) IPURE;
- MAPIMETHOD(Clone)
- (THIS_ IStream FAR * FAR * lppstm) IPURE;
- /* Interface declaration */
- #undef INTERFACE
- #define INTERFACE struct _XPSOF
- #undef MAPIMETHOD_
- #define MAPIMETHOD_(type, method) MAPIMETHOD_DECLARE(type, method, XPSOF_)
- MAPI_IUNKNOWN_METHODS(IMPL)
- MAPI_ISTREAM_METHODS(IMPL)
- #undef MAPIMETHOD_
- #define MAPIMETHOD_(type, method) MAPIMETHOD_TYPEDEF(type, method, XPSOF_)
- MAPI_IUNKNOWN_METHODS(IMPL)
- MAPI_ISTREAM_METHODS(IMPL)
- #undef MAPIMETHOD_
- #define MAPIMETHOD_(type, method) STDMETHOD_(type, method)
- DECLARE_MAPI_INTERFACE(XPSOF_)
- {
- MAPI_IUNKNOWN_METHODS(IMPL)
- MAPI_ISTREAM_METHODS(IMPL)
- };
- typedef struct _XPSOF
- {
- XPSOF_Vtbl * lpVtbl;
- LONG lcInit;
- ULONG ulFlags;
- LPSTREAM lpstrm;
- LPVOID lpvBuff;
- ULONG libBuff;
- ULONG cbBuffMac;
- BOOL fDirty;
- LPFREEBUFFER FreeBuffer;
- } XPSOF, FAR * LPXPSOF;