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.
155 lines
3.4 KiB
155 lines
3.4 KiB
// Copyright (c) 1997-2001 Microsoft Corporation, All Rights Reserved
|
|
|
|
#ifndef __SNMPNEXT_H
|
|
#define __SNMPNEXT_H
|
|
|
|
class PropertyDefinition
|
|
{
|
|
private:
|
|
protected:
|
|
public:
|
|
|
|
WbemSnmpProperty *m_Property ;
|
|
|
|
ULONG m_KeyCount ;
|
|
SnmpObjectIdentifier **m_ObjectIdentifierComponent ;
|
|
SnmpObjectIdentifier **m_ObjectIdentifierStart ;
|
|
SnmpObjectIdentifier **m_ObjectIdentifierEnd ;
|
|
ULONG *m_PartitionIndex ;
|
|
PartitionSet **m_KeyPartition ;
|
|
|
|
public:
|
|
|
|
PropertyDefinition ()
|
|
{
|
|
m_KeyCount = 0 ;
|
|
m_Property = NULL ;
|
|
m_ObjectIdentifierStart = NULL ;
|
|
m_ObjectIdentifierEnd = NULL ;
|
|
m_KeyPartition = NULL ;
|
|
m_PartitionIndex = NULL ;
|
|
m_ObjectIdentifierComponent = NULL ;
|
|
}
|
|
|
|
~PropertyDefinition ()
|
|
{
|
|
for ( ULONG t_Index = 1 ; t_Index <= m_KeyCount ; t_Index ++ )
|
|
{
|
|
if ( m_ObjectIdentifierStart )
|
|
delete m_ObjectIdentifierStart [ t_Index ] ;
|
|
|
|
if ( m_ObjectIdentifierEnd )
|
|
delete m_ObjectIdentifierEnd [ t_Index ] ;
|
|
|
|
if ( m_ObjectIdentifierComponent )
|
|
delete m_ObjectIdentifierComponent [ t_Index ] ;
|
|
}
|
|
|
|
delete [] m_ObjectIdentifierStart ;
|
|
delete [] m_ObjectIdentifierEnd ;
|
|
delete [] m_ObjectIdentifierComponent ;
|
|
|
|
delete [] m_KeyPartition ;
|
|
delete [] m_PartitionIndex ;
|
|
}
|
|
} ;
|
|
|
|
class AutoRetrieveOperation : public SnmpAutoRetrieveOperation
|
|
{
|
|
private:
|
|
|
|
PropertyDefinition *m_PropertyContainer ;
|
|
ULONG m_PropertyContainerLength ;
|
|
|
|
BOOL virtuals ;
|
|
BOOL virtualsInitialised ;
|
|
ULONG varBindsReceived ;
|
|
ULONG erroredVarBindsReceived ;
|
|
ULONG rowsReceived ;
|
|
ULONG rowVarBindsReceived ;
|
|
|
|
SnmpSession *session ;
|
|
|
|
SnmpInstanceResponseEventObject *eventObject ;
|
|
IWbemClassObject *snmpObject ;
|
|
|
|
LONG EvaluateInitialVarBind (
|
|
|
|
ULONG a_PropertyIndex ,
|
|
SnmpObjectIdentifier &a_CurrentIdentifier ,
|
|
SnmpObjectIdentifier &a_StartIdentifier
|
|
) ;
|
|
|
|
LONG EvaluateSubsequentVarBind (
|
|
|
|
ULONG a_PropertyIndex ,
|
|
IN ULONG &a_CurrentIndex ,
|
|
SnmpObjectIdentifier &a_CurrentIdentifier ,
|
|
SnmpObjectIdentifier &a_StartIdentifier
|
|
) ;
|
|
|
|
LONG EvaluateVarBind (
|
|
|
|
ULONG a_PropertyIndex ,
|
|
SnmpObjectIdentifier &a_StartIdentifier
|
|
) ;
|
|
|
|
LONG EvaluateResponse (
|
|
|
|
ULONG a_PropertyIndex ,
|
|
IN ULONG &a_CurrentIndex ,
|
|
SnmpObjectIdentifier &a_AdvanceIdentifier
|
|
) ;
|
|
|
|
protected:
|
|
|
|
void ReceiveResponse () ;
|
|
|
|
void ReceiveRowResponse () ;
|
|
|
|
void ReceiveRowVarBindResponse (
|
|
|
|
IN const ULONG &var_bind_index,
|
|
IN const SnmpVarBind &requestVarBind ,
|
|
IN const SnmpVarBind &replyVarBind ,
|
|
IN const SnmpErrorReport &error
|
|
) ;
|
|
|
|
void ReceiveVarBindResponse (
|
|
|
|
IN const ULONG &var_bind_index,
|
|
IN const SnmpVarBind &requestVarBind ,
|
|
IN const SnmpVarBind &replyVarBind ,
|
|
IN const SnmpErrorReport &error
|
|
) ;
|
|
|
|
void ReceiveErroredVarBindResponse(
|
|
|
|
IN const ULONG &var_bind_index,
|
|
IN const SnmpVarBind &requestVarBind ,
|
|
IN const SnmpErrorReport &error
|
|
) ;
|
|
|
|
LONG EvaluateNextRequest (
|
|
|
|
IN const ULONG &var_bind_index,
|
|
IN const SnmpVarBind &requestVarBind ,
|
|
IN const SnmpVarBind &replyVarBind ,
|
|
IN SnmpVarBind &sendVarBind
|
|
) ;
|
|
|
|
|
|
void FrameTooBig() ;
|
|
void FrameOverRun() ;
|
|
|
|
public:
|
|
|
|
AutoRetrieveOperation (IN SnmpSession &session, IN SnmpInstanceResponseEventObject *eventObjectArg ) ;
|
|
~AutoRetrieveOperation () ;
|
|
|
|
void Send () ;
|
|
|
|
void DestroyOperation () { SnmpAutoRetrieveOperation :: DestroyOperation () ; }
|
|
};
|
|
|
|
#endif // __SNMPNEXT_H
|