2011-07-16 20 views
1

我正在按照下面的教程創建一個擴展代理DLL。我按照下面的教程:http://www.codeproject.com/KB/IP/SNMP_Agent_DLL__Part1_.aspx與開發SNMP擴展代理DLL有關嗎?

按照教程,我需要在等最低限度使用這些1的方法簽名:

BOOL SNMP_FUNC_TYPE SnmpExtensionQuery(BYTE bPduType, 
       SnmpVarBindList *pVarBindList, 
       AsnInteger32 *pErrorStatus, 
       AsnInteger32 *pErrorIndex) 

的問題是與SnmpVarBindList * pVarBindList參數。我支持在SnmpVarBindList數據類型中插入以下數據,例如(「關於」,「名稱」,「年齡」)並將其傳遞到上面的方法中...

但我不確定如何創建SnmpVarBindList數據類型的列表並將以下數據(例如(「關於」,「名稱」,「年齡」)插入列表中?

MIB_ENTRY g_MyMibTable[] = { 
{ 
    {OID_SIZEOF(g_unAboutOid),g_unAboutOid}, 
    &g_szAbout, 
    "About", 
    ASN_OCTETSTRING, 
    SNMP_ACCESS_READ_ONLY, 
    &g_MyMibTable[1] 
}, 
{ 
    {OID_SIZEOF(g_unNameOid),g_unNameOid}, 
    &g_szName, 
    "Name", 
    ASN_OCTETSTRING, 
    SNMP_ACCESS_READ_WRITE, 
    &g_MyMibTable[2] 
}, 
{ 
    {OID_SIZEOF(g_unAgeOid),g_unAgeOid}, 
    &g_asnIntAge, 
    "Age", 
    ASN_INTEGER, 
    SNMP_ACCESS_READ_WRITE, 
    NULL 
} 

};

============================================== ============================================ // struct definations for您的參考:

typedef struct { 
AsnObjectName name; 
AsnObjectSyntax value; 

} SnmpVarBind;

typedef struct { 
SnmpVarBind * list; 
UINT   len; 

} SnmpVarBindList;

任何指導或代碼示例提供將非常感激,我是新來的C++

真誠,

回答

1

這裏是你所需要的。

/* Définitions of vars leaves. 
    Terminal zero is needed 
*/  
UINT MIB_About[]  = { 2, 1, 0 }; 
UINT MIB_Name[]  = { 2, 2, 0 }; 
UINT MIB_Age[]  = { 2, 3, 0 }; 

/* Physical (Har-coded) data of the MIB 
*/ 
char  MIB_AboutStor[]  = "The about text"; 
char  MIB_NameStor[]  = "The Name text"; 
AsnInteger MIB_AgeStor   = 20; 
extern MIB_ENTRY Mib[]; 
extern UINT  MIB_num_variables; 

/* initialisation du modèle d'accès aux variables de la MIB 
*/ 
MIB_ENTRY Mib[] = { 
     { { OID_SIZEOF(MIB_About), MIB_About }, 
     &MIB_AboutStor, ASN_RFC1213_DISPSTRING, 
     MIB_ACCESS_READ, MIB_leaf_func, &Mib[1] }, 

     { { OID_SIZEOF(MIB_Name), MIB_Name }, 
     &MIB_NameStor, ASN_RFC1213_DISPSTRING, 
     MIB_ACCESS_READ, MIB_leaf_func, &Mib[2] }, 

     { { OID_SIZEOF(MIB_Age), MIB_Age }, 
     &MIB_AgeStor, ASN_INTEGER, 
     MIB_ACCESS_READWRITE, MIB_control_func, NULL } 
     }; 

UINT MIB_num_variables = sizeof Mib/sizeof(MIB_ENTRY); 

可以FINF在Microsoft例MIB_leaf_funcMIB_control_func

+0

謝謝JP。另外,如何不使用硬編碼值,我需要在SnmpExtensionInit方法內調用BOOL SNMP_FUNC_TYPE SnmpExtensionQuery(BYTE bPduType,SnmpVarBindList * pVarBindList,AsnInteger32 * pErrorStatus,AsnInteger32 * pErrorIndex)正確? – user848007