C++ C++;SNMP扩展代理-如何使用ASN序列?

C++ C++;SNMP扩展代理-如何使用ASN序列?,c++,windows,snmp,winsnmp,C++,Windows,Snmp,Winsnmp,我需要的是创建用于监视软件系统的SNMP代理。 我使用“WiSNMP”来编写我的SNMP扩展代理在VisualC++中。输出是x64 DLL,它在Windows注册表中注册,由“SNMP服务”加载并正确执行。我的SNMP代理能够处理“SNMP_PDU_GET”、“SNMP_PDU_GETNEXT”、“SNMP_PDU_SET”请求以及生成SNMP陷阱。 到目前为止,一切都很顺利 但现在我需要处理复杂的数据类型“sequence”,它在“winsnmp”中表示为“AsnSequence”类型或“A

我需要的是创建用于监视软件系统的SNMP代理。 我使用“WiSNMP”来编写我的SNMP扩展代理在VisualC++中。输出是x64 DLL,它在Windows注册表中注册,由“SNMP服务”加载并正确执行。我的SNMP代理能够处理“SNMP_PDU_GET”、“SNMP_PDU_GETNEXT”、“SNMP_PDU_SET”请求以及生成SNMP陷阱。 到目前为止,一切都很顺利

但现在我需要处理复杂的数据类型“sequence”,它在“winsnmp”中表示为“AsnSequence”类型或“ASN_sequence”类型常量。要求使用包含多条记录的表回复SNMP manager。该表具有特定的结构,以下是示例MIB片段:

...
      hrTestTable OBJECT-TYPE
        SYNTAX     SEQUENCE OF HrTestEntry
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "sequence"
        ::= { BMS_ibm_wsmq 3 }
      hrTestEntry OBJECT-TYPE
        SYNTAX     HrTestEntry
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "Table row"
        INDEX { hrTestIndex }
        ::= { hrTestTable 1 }
      HrTestEntry ::= SEQUENCE {
        hrTestIndex Integer32,
        hrTestType AutonomousType,
        hrTestDescr DisplayString
      }
      hrTestIndex OBJECT-TYPE
        SYNTAX     Integer32 (1..2147483647)
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "indexColumn1"
        ::= { hrTestEntry 1 }
      hrTestType OBJECT-TYPE
        SYNTAX     AutonomousType
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "column1"
        ::= { hrTestEntry 2 }
      hrTestDescr OBJECT-TYPE
        SYNTAX     DisplayString
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "column2"
        ::= { hrTestEntry 3 }
...
SNMP管理器请求整个表后,代理将收到“SNMP\u PDU\u GETNEXT”请求:

对于所有这些情况,“&variableBindings->list[index].value.asnType”是“ASN_NULL”

我怀疑,生成响应“&variableBindings->list[index].value.asnType”必须用“ASN_序列”初始化,而“&variableBindings->list[index].value.asnValue.SEQUENCE”应该用“ASN序列”初始化

那么,我说得对吗

如何初始化“AsnSequence”的实例并用数据填充它

谢谢

BOOL SNMP_FUNC_TYPE SnmpExtensionQuery(BYTE operation, SnmpVarBindList *variableBindings, AsnInteger32 *errorStatus, AsnInteger32 *errorIndex) {
 …
 for (unsigned int index = 0; index < variableBindings->len; index++) {
  *errorStatus = SNMP_ERRORSTATUS_NOERROR;
  switch (operation) {
   …
   case SNMP_PDU_GETNEXT:
    …
    *errorStatus = GET_SEQUENCE(&variableBindings->list[index]);
    …
   …
  };
…
"&variableBindings->list[index].name" points to "hrTestIndex" at "index=0"
"&variableBindings->list[index].name" points to "hrTestType" at "index=1"
"&variableBindings->list[index].name" points to "hrTestDescr" at "index=2"