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.
 
 
 
 
 
 

80 lines
2.0 KiB

//-----------------------------------------------------------------------------
//
//
// File: refstr.h
//
// Description: Definition/Implementation of refcounted string. Used to hold
// dynamic config data.
//
// Author: Mike Swafford (MikeSwa)
//
// History:
// 10/8/98 - MikeSwa Created
//
// Copyright (C) 1998 Microsoft Corporation
//
//-----------------------------------------------------------------------------
#ifndef __REFSTR_H__
#define __REFSTR_H__
#define CREFSTR_SIG_VALID 'rtSR'
#define CREFSTR_SIG_INVALID 'rtS!'
//---[ CRefCountedString ]-----------------------------------------------------
//
//
// Description:
// Implemenation of a ref-counted string. Designed to hold config data,
// so that it can be passed to event sinks without holding a share lock.
// Hungarian:
// rstr, prstr
//
//-----------------------------------------------------------------------------
class CRefCountedString : public CBaseObject
{
protected:
DWORD m_dwSignature;
DWORD m_cbStrlen; //length of string w/o NULL
LPSTR m_szStr; //string data
public:
CRefCountedString()
{
m_dwSignature = CREFSTR_SIG_VALID;
m_cbStrlen = 0;
m_szStr = NULL;
};
~CRefCountedString()
{
if (m_szStr)
FreePv(m_szStr);
m_szStr = NULL;
m_cbStrlen = 0;
m_dwSignature = CREFSTR_SIG_INVALID;
}
//Used to allocate memory for string
// return FALSE if allocation fails
BOOL fInit(LPSTR szStr, DWORD cbStrlen);
//Return strlen of string
DWORD cbStrlen()
{
_ASSERT(CREFSTR_SIG_VALID == m_dwSignature);
return m_cbStrlen;
};
//Returns string
LPSTR szStr()
{
_ASSERT(CREFSTR_SIG_VALID == m_dwSignature);
return m_szStr;
};
};
HRESULT HrUpdateRefCountedString(CRefCountedString **pprstrCurrent, LPSTR szNewString);
#endif //__REFSTR_H__