Leaked source code of windows server 2003
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

76 lines
3.5 KiB

// --------------------------------------------------------------------------------
// ByteBuff.h
// Copyright (c)1993-1995 Microsoft Corporation, All Rights Reserved
// Steven J. Bailey
// --------------------------------------------------------------------------------
#ifndef _BYTEBUFF_H
#define _BYTEBUFF_H
// --------------------------------------------------------------------------------
// Default Grow Amount
// --------------------------------------------------------------------------------
#define BYTEBUFF_GROW 256
// --------------------------------------------------------------------------------
// WBS_xxx - WebBuffer State
// --------------------------------------------------------------------------------
#define BBS_LAST 0x00000001 // Last Buffer
// --------------------------------------------------------------------------------
// BUFFERINFO
// --------------------------------------------------------------------------------
typedef struct tagBUFFERINFO {
LPBYTE pb; // Current buffer
DWORD cb; // Current Byte Count
DWORD i; // Current Index
DWORD cbAlloc; // Sizeof(m_pb)
LPBYTE pbStatic; // Passed in, dont free
} BUFFERINFO, *LPBUFFERINFO;
// --------------------------------------------------------------------------------
// CByteBuffer
// --------------------------------------------------------------------------------
class CByteBuffer : public IUnknown
{
public:
// ----------------------------------------------------------------------------
// Construction
// ----------------------------------------------------------------------------
CByteBuffer(LPBYTE pb=NULL, ULONG cbAlloc=0, ULONG cb=0, ULONG i=0);
~CByteBuffer(void);
// ----------------------------------------------------------------------------
// IUnknown Members
// ----------------------------------------------------------------------------
STDMETHODIMP QueryInterface(REFIID riid, LPVOID *ppv) { return TrapError(E_NOTIMPL); }
STDMETHODIMP_(ULONG) AddRef(void) { return ++m_cRef; }
STDMETHODIMP_(ULONG) Release(void);
// ----------------------------------------------------------------------------
// CByteBuffer Methods
// ----------------------------------------------------------------------------
void Init(LPBYTE pb=NULL, ULONG cbAlloc=0, ULONG cb=0, ULONG i=0);
void SetGrowBy(DWORD cbGrow) { m_cbGrow = cbGrow; }
const LPBYTE PbData(void) { return ((0 == m_buffer.cb) ? NULL : (const LPBYTE)(m_buffer.pb)); }
const DWORD CbData(void) { return m_buffer.cb; }
void SetIndex(DWORD i) { m_buffer.i = i; }
HRESULT SetSize(DWORD cb);
HRESULT Append(LPBYTE pbData, ULONG cbData);
private:
// ----------------------------------------------------------------------------
// Private Members
// ----------------------------------------------------------------------------
HRESULT _HrRealloc(DWORD cbAlloc);
private:
// ----------------------------------------------------------------------------
// Private Data
// ----------------------------------------------------------------------------
ULONG m_cRef; // Reference count
DWORD m_dwState; // State
DWORD m_cbGrow; // Grow Amount
BUFFERINFO m_buffer; // Buffer
};
#endif // _BYTEBUFF_H