68 lines
1.9 KiB
C++
68 lines
1.9 KiB
C++
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
// Microsoft WMIOLE DB Provider
|
|
// (C) Copyright 1999 Microsoft Corporation. All Rights Reserved.
|
|
//
|
|
// BaseObj.h | CBaseObj Definitions
|
|
//
|
|
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
|
|
#ifndef __BASEOBJ_H__
|
|
#define __BASEOBJ_H__
|
|
|
|
|
|
#include "headers.h"
|
|
#include "critsec.h"
|
|
// Used in some classes that wish to distinguish behavior based on object type.
|
|
// (i.e. cast a void* to either CDataSource, CDBSession, CCommand, CRowset, etc.)
|
|
// Note that CBaseObj::GetBaseObjectTypeName() depends.
|
|
enum EBaseObjectType
|
|
{
|
|
BOT_UNDEFINED,
|
|
BOT_DATASOURCE,
|
|
BOT_SESSION,
|
|
BOT_COMMAND,
|
|
BOT_ROWSET,
|
|
BOT_ENUMERATOR,
|
|
BOT_ERROR,
|
|
BOT_BINDER,
|
|
BOT_TXNOPTIONS
|
|
};
|
|
|
|
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
// CBaseObj is the base object for CDatasource, CDBSession, CCommand, and CRowset
|
|
//
|
|
//
|
|
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
#pragma warning(disable : 4275)
|
|
class CBaseObj : public IUnknown //@base public | IUnknown
|
|
{
|
|
private:
|
|
EBaseObjectType m_BaseObjectType;
|
|
CCriticalSection m_cs;
|
|
DEBUGCODE(ULONG m_hObjCollection);
|
|
|
|
protected:
|
|
|
|
LPUNKNOWN m_pUnkOuter;
|
|
ULONG m_cRef;
|
|
|
|
protected:
|
|
CBaseObj(EBaseObjectType botVal, LPUNKNOWN pUnkOuter);
|
|
|
|
public:
|
|
virtual ~CBaseObj();
|
|
|
|
EBaseObjectType GetBaseObjectType() { return m_BaseObjectType; }
|
|
WCHAR * GetBaseObjectTypeName();
|
|
CCriticalSection * GetCriticalSection() { return &m_cs; }
|
|
|
|
// Get the outer unknown. Used by another object to call QI on this object.
|
|
// (Which should go through outer unknown instead of direct.)
|
|
inline IUnknown* GetOuterUnknown() { return m_pUnkOuter; }
|
|
};
|
|
#pragma warning(default : 4275)
|
|
|
|
#endif // __BASEOBJ_H__
|
|
|