Leaked source code of windows server 2003
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

//***************************************************************************
//
// 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