Source code of Windows XP (NT5)
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.
|
|
// File: refcount.h
#ifndef _REFCOUNT_H_
#define _REFCOUNT_H_
// RefCount destructor callback function
typedef void (*OBJECTDESTROYEDPROC)(void); VOID STDMETHODCALLTYPE DLLObjectDestroyed(void); VOID DllLock(void);
//////////////////////////////////////////////////////////////////////////
class RefCount { private: ULONG m_ulcRef; OBJECTDESTROYEDPROC m_ObjectDestroyed;
#ifdef DEBUG
BOOL m_fTrack; #endif
void Init(OBJECTDESTROYEDPROC ObjectDestroyed);
public: RefCount(); RefCount(OBJECTDESTROYEDPROC ObjectDestroyed); // Virtual destructor defers to destructor of derived class.
virtual ~RefCount(void);
// IUnknown
ULONG STDMETHODCALLTYPE AddRef(void); ULONG STDMETHODCALLTYPE Release(void);
#ifdef DEBUG
VOID SetTrack(BOOL fTrack) {m_fTrack = fTrack;} #endif
}; DECLARE_STANDARD_TYPES(RefCount);
// Special version of the above that calls our standard Dll locking functions
class DllRefCount : public RefCount { public: DllRefCount() : RefCount(&DLLObjectDestroyed) {DllLock();} ~DllRefCount(void) {}; };
#endif /* _REFCOUNT_H_ */
|