snmpExtensionQueryEx 函数 (snmp.h)
[SNMP 可用于“要求”部分中指定的操作系统。 它可能在后续版本中变更或不可用。 请改用 Windows 远程管理,这是 WS-Man 的 Microsoft 实现。]
Microsoft SNMP 服务调用 SnmpExtensionQueryEx 函数来处理 SNMP 请求,这些请求在 SNMP 扩展代理注册的一个或多个 MIB 子树中指定变量。 此函数是 SNMP 扩展代理 API 的元素。
语法
BOOL SNMP_FUNC_TYPE SnmpExtensionQueryEx(
[in] UINT nRequestType,
[in] UINT nTransactionId,
[in, out] SnmpVarBindList *pVarBindList,
[in, out] AsnOctetString *pContextInfo,
[out] AsnInteger32 *pErrorStatus,
[out] AsnInteger32 *pErrorIndex
);
参数
[in] nRequestType
指定 SNMP 服务请求扩展代理执行的操作类型。 此参数的取值可为下列值之一:
有关 SET 请求类型(即以SNMP_EXTENSION_SET_开头的请求类型)的其他信息,请参阅以下“备注”部分。
[in] nTransactionId
指定作为传入 SNMP 请求 PDU 的唯一标识符的 DWORD 变量。 扩展代理可以使用此值来关联涉及同一 PDU 的 SNMP 服务的多个调用。
[in, out] pVarBindList
指向包含相关变量的变量绑定列表的指针。
[in, out] pContextInfo
指向包含用户定义的上下文信息的八进制字符串的指针。
扩展代理可以使用此参数来存储在多阶段 SNMP SET 操作期间使用的上下文信息。 扩展代理必须在 CLEANUP 请求期间释放与此参数关联的资源。 SNMP 服务不会释放与此参数关联的任何资源。 有关其他信息,请参阅以下“备注”部分。
[out] pErrorStatus
指向用于接收错误状态结果的变量的指针。 此参数可以是 SNMPv2C 定义的以下值之一。
[out] pErrorIndex
指向用于接收错误索引结果的变量的指针。
返回值
如果函数成功,则返回值为 TRUE。
如果函数失败,则返回值为 FALSE。
注解
SNMP 服务多次调用 SnmpExtensionQueryEx 函数来处理传入的 SNMP SET 请求。 该服务可以在 TEST 请求阶段、COMMIT 请求阶段、UNDO 请求阶段和 CLEANUP 请求阶段调用 SnmpExtensionQueryEx 。
TEST 请求
SNMP 服务通过首先调用具有 SNMP_EXTENSION_SET_TEST dwRequestType 的 SnmpExtensionQueryEx 函数来处理 SNMP SET 请求类型。 服务调用负责请求中的变量绑定的每个扩展代理。 每个扩展代理都必须验证变量绑定列表中的变量。 他们可以选择将以下请求所需的任何上下文信息存储在 pContextInfo 参数指向的变量中。如果 TEST 请求失败,服务将启动 CLEANUP 请求。 该服务使用 SnmpExtensionQueryEx 函数再次调用以前向 TEST 请求返回 TRUE 的每个扩展代理。 该服务使用 SNMP_EXTENSION_SET_CLEANUP dwRequestType 调用每个扩展代理。
COMMIT 请求
如果所有扩展代理都对 TEST 请求返回 TRUE,SNMP 服务将使用 SNMP_EXTENSION_SET_COMMIT dwRequestType 调用每个扩展代理,并使用 SnmpExtensionQueryEx 函数。 服务返回扩展代理传递给服务的扩展代理上下文信息。 这是扩展代理在测试请求期间在 pContextInfo 参数中传递的上下文信息。 扩展代理可以使用上下文信息以特定于检测的方式更新指定变量的值。如果扩展代理支持回滚处理,则此时它可以更新 pContextInfo 参数中的上下文信息。 SNMP 服务在 UNDO 请求期间将信息传递回扩展代理。
如果所有扩展代理都对 COMMIT 请求返回 TRUE,则服务将使用 SNMP_EXTENSION_SET_CLEANUP dwRequestType 使用 SnmpExtensionQueryEx 函数调用每个扩展代理。
如果任何扩展代理未能通过 COMMIT 请求,该服务也会启动 CLEANUP 请求。 该服务使用 SnmpExtensionQueryEx 函数再次调用以前向 COMMIT 请求返回 TRUE 的每个扩展代理。 该服务使用 SNMP_EXTENSION_SET_CLEANUP dwRequestType 调用每个扩展代理。
CLEANUP 请求
该服务会将在 TEST 或 COMMIT 请求期间在 pContextInfo 参数中传递的上下文信息返回给扩展代理。 扩展代理此时必须释放与 参数关联的资源。UNDO 请求
如果任何扩展代理向 COMMIT 请求返回 FALSE,SNMP 服务将终止 COMMIT 请求。 该服务调用每个向 COMMIT 请求返回 TRUE 且 dwRequestType 为 SNMP_EXTENSION_SET_UNDO 的扩展代理。 这会向扩展代理发出 COMMIT 请求失败的信号,它们必须启动回滚处理。扩展代理必须尝试将相关变量的值重置回 COMMIT 请求失败之前的值。 为此,扩展代理使用在 COMMIT 请求期间 pContextInfo 参数中返回的上下文信息。
如果任何扩展代理向 UNDO 请求返回 FALSE ,则整个 SET 操作将失败并显示错误代码SNMP_ERRORSTATUS_UNDOFAILED。 如果所有扩展代理都对 UNDO 请求返回 TRUE,SNMP SET 操作将失败,并显示失败 COMMIT 请求的扩展代理设置的错误代码。
在 UNDO 请求之后,服务始终使用 SNMP_EXTENSION_SET_CLEANUP dwRequestType 使用 SnmpExtensionQueryEx 函数调用每个扩展代理。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | Windows 2000 Professional [仅限桌面应用] |
最低受支持的服务器 | Windows 2000 Server [仅限桌面应用] |
目标平台 | Windows |
标头 | snmp.h |