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.
149 lines
3.8 KiB
149 lines
3.8 KiB
//***************************************************************************
|
|
|
|
//
|
|
|
|
// File:
|
|
|
|
//
|
|
|
|
// Module: MS SNMP Provider
|
|
|
|
//
|
|
|
|
// Purpose:
|
|
|
|
//
|
|
|
|
// Copyright (c) 1997-2001 Microsoft Corporation, All Rights Reserved
|
|
//
|
|
//***************************************************************************
|
|
|
|
#ifndef _SNMP_EVT_PROV_EVTMAP_H
|
|
#define _SNMP_EVT_PROV_EVTMAP_H
|
|
|
|
class CWbemServerWrap;
|
|
|
|
typedef enum tag_NameElementType
|
|
{ MYWBEM_NAME_ELEMENT_TYPE_PROPERTY = 0,
|
|
MYWBEM_NAME_ELEMENT_TYPE_INDEX = 1
|
|
} MYWBEM_NAME_ELEMENT_TYPE;
|
|
|
|
typedef union tag_NameElementUnion
|
|
{
|
|
WCHAR* m_wszPropertyName;
|
|
long m_lArrayIndex;
|
|
} MYWBEM_NAME_ELEMENT_UNION;
|
|
|
|
typedef struct tag_NameElement
|
|
{
|
|
short m_nType;
|
|
MYWBEM_NAME_ELEMENT_UNION Element;
|
|
} MYWBEM_NAME_ELEMENT;
|
|
|
|
typedef struct _tag_WbemPropertyName
|
|
{
|
|
long m_lNumElements;
|
|
MYWBEM_NAME_ELEMENT __RPC_FAR *m_aElements;
|
|
} WBEM_PROPERTY_NAME;
|
|
|
|
struct VarBindObjectStruct
|
|
{
|
|
BOOL fDone;
|
|
SnmpVarBind* pVarBind;
|
|
};
|
|
|
|
struct VarBindObjectArrayStruct
|
|
{
|
|
VarBindObjectStruct* vbs;
|
|
UINT length;
|
|
|
|
VarBindObjectArrayStruct(VarBindObjectStruct* a_vbs, UINT a_length) : vbs(a_vbs), length(a_length) {}
|
|
};
|
|
|
|
|
|
class CMapToEvent
|
|
{
|
|
protected:
|
|
|
|
CString m_addr; //sending address
|
|
CString m_ctxt; //sending context
|
|
CString m_oid; //snmptrap OID
|
|
CString m_transport; //the transport protocol
|
|
CString m_class; //the event class name
|
|
IWbemClassObject *m_object; //the actual event instance which has been "spawned"
|
|
CWbemServerWrap *m_nspace; //the namespace we are working in
|
|
IWbemClassObject *m_vbdefn; //the snmpvarbind class object
|
|
BOOL m_btriedGeneric; //indicates if the generic class has been tried
|
|
BOOL m_btryGeneric; //indicates that the generic class should be tried
|
|
BOOL m_bCheckedVersion; //indicates whether the version has been determined
|
|
BOOL m_bSNMPv1; //indicates the SNMP version
|
|
VarBindObjectArrayStruct m_vbs; //the varbinds
|
|
|
|
CMapToEvent();
|
|
|
|
//sets the m_class variable. if btryGeneric is set gets the generic class.
|
|
//if m_btryGeneric is not set and a generic class is returned m_btriedGeneric
|
|
//must be set to true.
|
|
virtual BOOL GetClass();
|
|
|
|
virtual BOOL GetSpecificClass() = 0;
|
|
virtual const wchar_t* GetV1Class() = 0;
|
|
virtual const wchar_t* GetV2Class() = 0;
|
|
|
|
void GetClassInstance(IWbemClassObject** ppObj);
|
|
|
|
virtual HRESULT GetStandardProperty(long lNumElements,
|
|
MYWBEM_NAME_ELEMENT *aElements,
|
|
long lFlags,
|
|
VARIANT *pvValue);
|
|
|
|
virtual HRESULT GetPropertyValue(long lNumElements,
|
|
MYWBEM_NAME_ELEMENT *aElements,
|
|
long lFlags,
|
|
VARIANT *pvValue);
|
|
|
|
virtual HRESULT GetSpecificPropertyValue(long lNumElements,
|
|
MYWBEM_NAME_ELEMENT *aElements,
|
|
long lFlags,
|
|
VARIANT *pvValue) = 0;
|
|
|
|
virtual HRESULT GetVBProperty(long lNumElements,
|
|
MYWBEM_NAME_ELEMENT *aElements,
|
|
long lFlags,
|
|
VARIANT *pvValue);
|
|
|
|
BOOL IsSNMPv1();
|
|
|
|
IWbemClassObject* GetVBClassDefn();
|
|
IWbemClassObject* GetVBClassObjectByIndex(UINT index);
|
|
BOOL GetVBPropValueByIndex(UINT index, CString& type, VARIANT& vval);
|
|
BOOL GetVBPropOIDByIndex(UINT index, VARIANT& vOid);
|
|
|
|
public:
|
|
|
|
enum EMappingType
|
|
{
|
|
REFERENT_MAPPER = 0,
|
|
ENCAPSULATED_MAPPER = 1
|
|
};
|
|
|
|
virtual void ResetData();
|
|
|
|
virtual void GenerateInstance(IWbemClassObject** ppInst) = 0;
|
|
|
|
BOOL TriedGeneric() { return m_btriedGeneric; }
|
|
|
|
void SetTryGeneric();
|
|
|
|
void SetData(const char* sender_addr,
|
|
const char* security_Context,
|
|
const char* snmpTrapOid,
|
|
const char* transport,
|
|
SnmpVarBindList& vbList,
|
|
CWbemServerWrap* nspace);
|
|
|
|
virtual ~CMapToEvent();
|
|
};
|
|
|
|
|
|
#endif //_SNMP_EVT_PROV_EVTMAP_H
|