Функция SnmpExtensionQuery (snmp.h)
[SNMP доступен для использования в операционных системах, указанных в разделе Требования. В последующих версиях он может быть изменен или недоступен. Вместо этого используйте удаленное управление Windows, которое является реализацией WS-Man майкрософт.]
Служба Microsoft SNMP вызывает функцию SnmpExtensionQuery для разрешения запросов SNMP, содержащих переменные в одном или нескольких поддереви MIB, зарегистрированных агентом расширения SNMP. Эта функция является элементом API агента расширения SNMP.
Синтаксис
BOOL SNMP_FUNC_TYPE SnmpExtensionQuery(
[in] BYTE bPduType,
[in, out] SnmpVarBindList *pVarBindList,
[out] AsnInteger32 *pErrorStatus,
[out] AsnInteger32 *pErrorIndex
);
Параметры
[in] bPduType
Указывает тип запроса PDU SNMP версии 1 (SNMPv1). Этот параметр может принимать одно из указанных ниже значений.
Обратите внимание, что типы запросов PDU были переименованы. Дополнительные сведения см. в разделах Типы переменных SNMP и Запрос типов PDU.
[in, out] pVarBindList
Указатель на список привязок переменных.
[out] pErrorStatus
Указатель на переменную, в которой будет возвращен результат состояния ошибки. Этот параметр может быть одним из следующих значений, определенных SNMPv1.
[out] pErrorIndex
Указатель на переменную, в которой будет возвращен результат индекса ошибки.
Возвращаемое значение
Если функция выполняется успешно, возвращается значение TRUE.
Если функция завершается сбоем, возвращается значение FALSE.
Комментарии
Когда служба SNMP получает запрос SNMP PDU, она вызывает функцию SnmpExtensionQuery для обработки запроса. Агент расширения должен следовать правилам RFC 1157, чтобы разрешить привязки переменных или создать ошибку.
Если агент расширения не может разрешить привязки переменных в запросе Get Next , он должен изменить поле имени структуры SnmpVarBind на значение идентификатора объекта сразу после идентификатора поддерживаемого в настоящее время представления поддереве MIB. Например, если агент расширения поддерживает представление ".1.3.6.1.4.1.77.1", запрос Get Next в .1.3.6.1.4.1.77.1.5.1" приведет к изменению поля имени .1.3.6.1.4.1.77.2". Это сигнализирует службе SNMP продолжить попытку разрешения привязок переменных с другими агентами расширения.
Важно отметить, что службе SNMP и агенту расширения может потребоваться обмен динамически выделенной памяти во время вызова функции SnmpExtensionQuery . Служба динамически выделяет идентификатор объекта в каждой структуре SnmpVarBind , которая передается агенту расширения. Однако агент расширения должен освободить эту память, чтобы заменить идентификатор объекта при обработке запроса Get Next . Агент расширения выделяет динамическую память для типов объектов переменной длины. Служба SNMP освобождает эту память после размещения объекта в PDU ответа.
Чтобы избежать повреждения кучи и утечки памяти, служба SNMP и агент расширения должны использовать подпрограммы выделения памяти, которые разрешаются в одну кучу. Агент расширения должен использовать функцию SnmpUtilMemAlloc для выделения памяти, которую он передает службе SNMP. Она должна использовать функцию SnmpUtilMemFree , чтобы освободить память, передается службой обратно агенту расширения. Эти функции находятся в библиотеке служебной динамической компоновки SNMPAPI.DLL.
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Windows 2000 Professional [только классические приложения] |
Минимальная версия сервера | Windows 2000 Server [только классические приложения] |
Целевая платформа | Windows |
Header | snmp.h |