nbsp; // PDU request identifier
smiINT error_status, // valid only for SNMP_PDU_GETBULK requests
smiINT error_index, // valid only for SNMP_PDU_GETBULK requests
HSNMP_VBL varbindlist // handle to the variable bindings list
);来完成该功能。
第一个和最后一个参数是我们上面构造的会话句炳和变量绑定列表句炳,第二个参数很重要,他表示我们想要执行的操作方式,SNMP中有如下的选项:
SNMP_PDU_GET
SNMP_PDU_GETNEXT
SNMP_PDU_RESPONSE
SNMP_PDU_SET
SNMP_PDU_V1TRAP
SNMP_PDU_GETBULK
SNMP_PDU_TRAP
对于这些操作,我建议读者最好找点有关书籍看看,在这里我只对部分操作大概讲解一下,SNMP_PDU_GET通常用来获得某一个特定的对象标志符所对应的值,SNMP_PDU_GETNEXT是在编程人员不了解该表列情况下使用的用来获取一组值的操作。SNMP_PDU_RESPONSE一般是SNMP代理填写的,表示应答发出操作请求的数据报。SNMP_PDU_SET是用来改变某一对象标志符的值的操作。SNMP_PDU_GETBULK只能在V2版本以上使用,是用来解决SNMP_PDU_GETNEXT一次消息只能取得一个数据的缺点,可通过发一次消息取得一组数据。SNMP_PDU_V1TRAP和SNMP_PDU_TRAP使用来发自陷消息的操作。
第三个参数request_id,对于同步实现消息机制的编程来说,几乎没有作用,但是对于异步操作,该参数有很重要的作用,你可以用它来标志某一个请求的消息,如果有几个消息都在消息队列中,你可以通过它来确定自己想要处理的消息,该值完全可以自己来设定。
error_status和error_index在SNMP_PDU_GETBULK操作中分别为PDU中non_repeaters域定一个值和PDU的max_repetitions域指定一个值。
在其他操作中都为0。
该函数返回一个PDU句炳。
万事俱备了,就让我们的火车启航吧。用下面的函数
12。 SNMPAPI_STATUS SnmpSendMsg(
HSNMP_SESSION session, // handle to the WinSNMP session
HSNMP_ENTITY s