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.
145 lines
3.2 KiB
145 lines
3.2 KiB
//***************************************************************************
|
|
|
|
//
|
|
|
|
// File:
|
|
|
|
//
|
|
|
|
// Module: MS SNMP Provider
|
|
|
|
//
|
|
|
|
// Purpose:
|
|
|
|
//
|
|
|
|
// Copyright (c) 1997-2001 Microsoft Corporation, All Rights Reserved
|
|
//
|
|
//***************************************************************************
|
|
|
|
#ifndef __PROPSET_H
|
|
#define __PROPSET_H
|
|
|
|
class SnmpSetClassObject : public SnmpClassObject
|
|
{
|
|
private:
|
|
|
|
BOOL m_RowStatusSpecified ;
|
|
BOOL m_RowStatusPresent ;
|
|
|
|
wchar_t **m_WritableSet ;
|
|
ULONG m_WritableSetCount ;
|
|
|
|
BOOL CheckProperty ( WbemSnmpErrorObject &a_errorObject , WbemSnmpProperty *property ) ;
|
|
|
|
protected:
|
|
public:
|
|
|
|
SnmpSetClassObject ( SnmpResponseEventObject *parentOperation ) ;
|
|
|
|
~SnmpSetClassObject () ;
|
|
|
|
BOOL Check ( WbemSnmpErrorObject &a_errorObject ) ;
|
|
|
|
BOOL RowStatusSpecified () { return m_RowStatusSpecified ; }
|
|
BOOL RowStatusPresent () { return m_RowStatusPresent ; }
|
|
|
|
ULONG NumberOfWritable () ;
|
|
|
|
BOOL IsWritable ( WbemSnmpProperty *a_Property ) ;
|
|
|
|
void SetWritableSet (
|
|
|
|
wchar_t **a_WritableSet ,
|
|
ULONG a_WritableSetCount
|
|
) ;
|
|
} ;
|
|
|
|
class SnmpSetResponseEventObject : public SnmpResponseEventObject
|
|
{
|
|
private:
|
|
protected:
|
|
|
|
/*
|
|
* State variables for event based processing.
|
|
*/
|
|
|
|
ULONG state ;
|
|
ULONG m_VarBindsLeftBeforeTooBig ;
|
|
BOOL m_SnmpTooBig ;
|
|
|
|
long m_lflags ;
|
|
IWbemClassObject *classObject ;
|
|
SnmpSetClassObject snmpObject ;
|
|
BOOL processComplete ;
|
|
|
|
SnmpSession *session ;
|
|
SetOperation *operation ;
|
|
SetQueryOperation *m_QueryOperation ;
|
|
|
|
BOOL SendSnmp ( WbemSnmpErrorObject &a_errorObject , const ULONG &a_NumberToSend = 0xffffffff ) ;
|
|
|
|
public:
|
|
|
|
SnmpSetResponseEventObject ( CImpPropProv *provider , IWbemClassObject *classObject , IWbemContext *a_Context , long lflags ) ;
|
|
~SnmpSetResponseEventObject () ;
|
|
|
|
SnmpClassObject *GetSnmpClassObject () { return & snmpObject ; }
|
|
IWbemClassObject *GetClassObject () { return classObject ; }
|
|
} ;
|
|
|
|
class SnmpUpdateEventObject : public SnmpSetResponseEventObject
|
|
{
|
|
private:
|
|
protected:
|
|
|
|
BOOL Create_Only () ;
|
|
BOOL Update_Only () ;
|
|
BOOL Create_Or_Update () ;
|
|
|
|
BOOL Send_Variable_Binding_List (
|
|
|
|
SnmpSetClassObject &a_SnmpSetClassObject ,
|
|
ULONG a_NumberToSend
|
|
) ;
|
|
|
|
BOOL Send_Variable_Binding_List (
|
|
|
|
SnmpSetClassObject &a_SnmpSetClassObject ,
|
|
ULONG a_NumberToSend ,
|
|
SnmpRowStatusType :: SnmpRowStatusEnum a_SnmpRowStatusEnum
|
|
) ;
|
|
|
|
BOOL CheckForRowExistence ( WbemSnmpErrorObject &a_ErrorObject ) ;
|
|
BOOL HandleSnmpVersion ( WbemSnmpErrorObject &a_ErrorObject ) ;
|
|
BOOL Update ( WbemSnmpErrorObject &a_errorObject ) ;
|
|
|
|
public:
|
|
|
|
SnmpUpdateEventObject ( CImpPropProv *provider , IWbemClassObject *classObject , IWbemContext *a_Context , long lflags ) ;
|
|
~SnmpUpdateEventObject () ;
|
|
} ;
|
|
|
|
class SnmpUpdateAsyncEventObject : public SnmpUpdateEventObject
|
|
{
|
|
private:
|
|
|
|
IWbemObjectSink *notificationHandler ;
|
|
|
|
protected:
|
|
|
|
void SetComplete () ;
|
|
|
|
public:
|
|
|
|
SnmpUpdateAsyncEventObject ( CImpPropProv *provider , IWbemClassObject *classObject , IWbemObjectSink *notify , IWbemContext *a_Context , long lflags ) ;
|
|
~SnmpUpdateAsyncEventObject () ;
|
|
|
|
void Process () ;
|
|
void ReceiveComplete () ;
|
|
void SnmpTooBig () ;
|
|
} ;
|
|
|
|
|
|
#endif // __PROPSET_H
|