This repository has been archived on 2024-12-16. You can view files and clone it, but cannot push or open issues or pull requests.
CodeBlocksPortable/Borland/BCC55/Include/vsop.h

165 lines
4.5 KiB
C

//--vsop.h-----------------------------------------------------------------
//
// Header file for the property stream wrapper class.
//
// Copyright (C) Microsoft Corp., 1986-1996. All rights reserved.
//
//-----------------------------------------------------------------------------
#ifndef _VSOP_H
#pragma option push -b -a8 -pc -A- /*P_O_Push*/
#define _VSOP_H
#ifdef __cplusplus
extern "C" {
#endif
//$--IEDKVirtualStreamOnProperty---------------------------------------------------------
//
// Buffers access to a property stream
//
//----------------------------------------------------------------------------
#undef INTERFACE
#define INTERFACE IEDKVirtualStreamOnProperty
DECLARE_INTERFACE_(IEDKVirtualStreamOnProperty, IUnknown)
{
// Notes: Order IS important. The IEDKVirtualStreamOnProperty interface
// must have the same vtable order as the IStream interface.
//
// The Read(), Write(), CopyTo() and Commit() methods will return
// MAPI_E_* error codes if an attempt to access the underlying property
// fails. Otherwise, the IStream methods will return IStream STG_E_* errors.
#ifndef NO_BASEINTERFACE_FUNCS
/* IUnknown methods */
STDMETHOD(QueryInterface)(
THIS_
REFIID riid,
LPVOID * ppvObj
) PURE;
STDMETHOD_(ULONG, AddRef)(
THIS
) PURE;
STDMETHOD_(ULONG, Release)(
THIS
) PURE;
#endif
// IEDKVirtualStreamOnProperty methods (same as IStream methods)
STDMETHOD(Read)(
THIS_
IN LPVOID pv, // output buffer pointer
IN ULONG cb, // maximum # of bytes to read
OUT ULONG * pcb // # of bytes read
) PURE;
STDMETHOD(Write)(
THIS_
IN VOID const * pv, // data to write
IN ULONG cb, // # bytes to write
OUT ULONG *pcb // # bytes written
) PURE;
STDMETHOD(Seek)(
THIS_
IN LARGE_INTEGER cbOffset, // byte offset
IN DWORD dwOrigin, // origin
OUT ULARGE_INTEGER * pcbPos // new position
) PURE;
STDMETHOD(SetSize)(
THIS_
IN ULARGE_INTEGER nSize // new size
) PURE;
STDMETHOD(CopyTo)(
THIS_
IN LPSTREAM pStrm, // destination stream pointer
IN ULARGE_INTEGER cb, // # bytes to copy
OUT ULARGE_INTEGER * pcbRead, // # bytes read
OUT ULARGE_INTEGER * pcbWritten // # bytes written
) PURE;
STDMETHOD(Commit)(
THIS_
IN DWORD dwFlags // flags
) PURE;
STDMETHOD(Revert)(
THIS
) PURE;
STDMETHOD(LockRegion)(
THIS_
IN ULARGE_INTEGER cbOffset, // offset
IN ULARGE_INTEGER cbLength, // length
IN DWORD dwFlags // flags
) PURE;
STDMETHOD(UnlockRegion)(
THIS_
IN ULARGE_INTEGER cbOffset, // offset
IN ULARGE_INTEGER cbLength, // length
IN DWORD dwFlags // flags
) PURE;
STDMETHOD(Stat)(
THIS_
OUT STATSTG * pStatStg, // stream statistic pointer
IN DWORD dwFlags // flags
) PURE;
STDMETHOD(Clone)(
THIS_
OUT LPSTREAM * ppStrm // pointer to new stream
) PURE;
};
//$--PVIRTUALSTREAMONPROPERTY-----------------------------------------------------------
//
// Pointer to IEDKVirtualStreamOnProperty interface.
//
//----------------------------------------------------------------------------
typedef IEDKVirtualStreamOnProperty * PVIRTUALSTREAMONPROPERTY;
//$--HrOpenVirtualStreamOnProperty------------------------------------------
//
// DESCRIPTION:
// API to open a buffered stream on a binary or string property
// Callable from "C" or "C++"
//
// INPUT: pPropObject -- MAPI property object pointer
// ulPropTag -- property tag to open stream on
// ulFlags -- MAPI property flags (MAPI_MODIFY, MAPI_CREATE)
//
// OUTPUT: ppVirtualStreamOnProperty -- pointer to buffered stream on property
//
// RETURNS: HRESULT -- NOERROR if successful,
// E_INVALIDARG if bad input,
// E_OUTOFMEMORY if memory problems,
// E_FAIL otherwise
//
//-----------------------------------------------------------------------------
STDAPI HrOpenVirtualStreamOnProperty(
IN LPMAPIPROP pPropObject, // MAPI property object pointer
IN ULONG ulPropTag, // property tag to open virtual stream on
IN ULONG ulFlags, // MAPI property flags
OUT PVIRTUALSTREAMONPROPERTY * ppVirtualStreamOnProperty); // pointer buffered stream
#ifdef __cplusplus
}
#endif
#pragma option pop /*P_O_Pop*/
#endif