SnmpExtensionQuery

【勇芳软件工作室】汉化HomePreviousNext

可扩展代理程序调用扩展代理程序DLL中的SnmpExtensionQuery函数来解析在一个或多个扩展代理的已注册MIB子树中包含变量的SNMP请求。

BOOL SnmpExtensionQuery(

BYTE 【请求类型】, 
RFC1157VarBindList【* variableBindings 】 
AsnInteger【* ErrorStatus中】, 
AsnInteger【* ErrorIndex】 
); 

参数

【请求类型】

[in]指定SNMP请求类型。此参数可以是以下值之一:

含义
ASN_RFC1157_GETREQUEST搜索并从指定的变量接收值。
ASN_RFC1157_GETNEXTREQUEST在不知道变量的名称的情况下,从变量搜索并接收值。
ASN_RFC1157_SETREQUEST将值存储在特定变量中。

【variableBindings】

[in/out]指向变量绑定列表。

【ErrorStatus中】

[out]指向将返回错误状态结果的变量。此参数可以是以下值之一:

含义
SNMP_ERRORSTATUS_NOERROR代理报告传输过程中没有发生错误。
SNMP_ERRORSTATUS_TOOBIG代理无法将请求的操作的结果放在单个SNMP消息中。
SNMP_ERRORSTATUS_NOSUCHNAME请求的操作确定了一个未知变量。
SNMP_ERRORSTATUS_BADVALUE请求的操作尝试更改变量,但指定了语法或值错误。
SNMP_ERRORSTATUS_READONLY请求的操作尝试根据变量的社区概要更改不允许更改的变量。
SNMP_ERRORSTATUS_GENERR在所请求的操作期间发生的其他错误之外的错误发生。

【ErrorIndex】

[out]指向将返回错误索引结果的变量。

返回值

如果函数成功,返回值为TRUE。

如果函数失败,返回值为FALSE。

备注

当可扩展代理必须在SnmpExtensionInit函数指定的子树中解析得到得到 【】 下一个命令时,必须调用SnmpExtensionQuery功能。对于得到命令,扩展代理必须遵循RFC 1157中的规则来解析变量绑定请求或生成错误。

获取下一个命令更复杂,因为扩展代理可能无法解析请求的变量绑定。如果可以解析变量绑定,则扩展代理必须遵循RFC 1157中的规则来解析变量绑定请求或生成错误。如果扩展代理无法解析变量绑定,则必须将RFC1157VarBind 结构的RFC1157VarBind字段更改为SnmpExtensionInit函数的【supportedView】参数中指定的MIB子树值之后的值。例如,如果代理支持视图“.1.3.6.1.4.1.77.1”,则“.1.3.6.1.4.1.77.1.5.1”上的获取下一个命令将导致修改的名称字段为“.1.3 .6.1.4.1.77.2\" 。这表示可扩展代理继续尝试解析与其他扩展代理程序的变量绑定。

重要的是要注意,可扩展代理和扩展代理可能需要在调用SnmpExtensionQuery函数期间交换动态分配的内存。可扩展代理在将其传递给扩展代理的每个RFC1157VarBind结构中动态分配对象标识符。但是,扩展代理必须释放该内存,以便在处理得到 【】 下一个请求时更换对象标识符。扩展代理为可变长度对象类型分配动态内存。可扩展代理需要在将对象放入响应后释放该内存。

为了避免堆损坏和内存泄漏,可扩展代理和扩展代理都必须使用解析到同一堆的内存分配例程。扩展代理应使用SnmpUtilMemAlloc函数分配内存和SnmpUtilMemFree函数来释放内存。这些功能位于实用程序动态链接库SNMPAPI.DLL中。

也可以看看

RFC1157VarBind, SnmpExtensionInit, SnmpUtilMemAlloc, SnmpUtilMemFree