//+-------------------------------------------------------------------------
//
//  Microsoft Windows
//  Copyright (C) Microsoft Corporation, 1998.
//
//  File:
//      buffer.idl
//
//  Contents:
//          Provides a virtual buffer for serialization operations
//          Intent is to have IStream support this interface if it
//          can provide buffer operations
//
//  History:
//              VinayKr     01-16-98        Created
//
//--------------------------------------------------------------------------
#ifndef DO_NO_IMPORTS
    import "iface.idl";
    import "wtypes.idl";
    import "objidl.idl";
    import "obase.idl";
#endif

[object,
local,
uuid(000001B4-0000-0000-C000-000000000046),
pointer_default(unique)
]
interface IBuffer:IUnknown
{
    HRESULT GetOrCreateBuffer([in] DWORD dwRequestedSize, 
                              [out] DWORD *dwActualSize,
                              [out, size_is(,*dwActualSize)] BYTE **ppBuff);
    HRESULT GetBuffer([out] DWORD *pdwLength, [out, size_is(,*pdwLength)] BYTE **ppBuff);
    HRESULT GetLength([out] DWORD *pdwLength);
    HRESULT GetCopy([in] BYTE *pBuff);
    HRESULT SetPosition([in] DWORD dwLenFromEnd, [in] DWORD dwPosFromStart);
    HRESULT SetBuffer([in] DWORD dwLength, [in, size_is(dwLength)] BYTE *pBuff);
    HRESULT SetCopyAlignment([in] DWORD dwCopyAlignment);
}
