text: //
  
  // Copyright (c) 1997-2001 Microsoft Corporation, All Rights Reserved
  //
  // ***************************************************************************
  //
  //	Original Author: Rajesh Rao
  //
  // 	$Author: rajeshr $
  //	$Date: 6/11/98 4:43p $
  // 	$Workfile:refcount.h $
  //
  //	$Modtime: 6/11/98 11:21a $
  //	$Revision: 1 $	
  //	$Nokeywords:  $
  //
  // 
  //  Description: Contains the declaration for a basic reference counted object, that
  //	also stores a timestamp (in 100-nanosecond intervals since January 1, 1601. This
  //	is copatible with the definition of the Win32 FILETIME struture)
  //
  //***************************************************************************
  
  #ifndef REFCOUNTED_OBJECT_H
  #define REFCOUNTED_OBJECT_H
  
  
  class CRefCountedObject
  {
  
  public:
  
  	CRefCountedObject();
  	CRefCountedObject(LPCWSTR lpszName);
  	virtual ~CRefCountedObject();
  
  	LPCWSTR GetName();
  	void SetName(LPCWSTR lpszName);
  	void AddRef();
  	void Release();
  	// Returns the time of creation 
  	__int64 GetCreationTime()
  	{
  		return m_CreationTime;
  	}
  
  	// Returns the last time of access 
  	__int64 GetLastAccessTime()
  	{
  		return m_LastAccessTime;
  	}
  	// Sets the last time of access 
  	void SetLastAccessTime(__int64 lastAccessTime)
  	{
  		m_LastAccessTime = lastAccessTime;
  	}
  
  
  private:
  	// A critical section object for synchronizing modifications to refcount
  	CRITICAL_SECTION m_ReferenceCountSection;
  
  	unsigned m_dwRefCount;
  	LPWSTR m_lpszName;
  	__int64 m_CreationTime; 
  	__int64 m_LastAccessTime; 
  
  	
  };
  
  #endif /* REFCOUNTED_OBJECT_H */