windows-nt/Source/XPSP1/NT/admin/wmi/wbem/adapters/oledb/baseobj.h
2020-09-26 16:20:57 +08:00

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__