Функция SnmpRecvMsg (winsnmp.h)

[SNMP доступен для использования в операционных системах, указанных в разделе Требования. В последующих версиях он может быть изменен или недоступен. Вместо этого используйте удаленное управление Windows, которое является реализацией WS-Man майкрософт.]

Функция SnmpRecvMsg WinSNMP извлекает результаты завершенного асинхронного запроса, отправленного вызовом функции SnmpSendMsg , в виде SNMP-сообщения. Функция SnmpRecvMsg также возвращает незавершенные данные ловушки и уведомления, зарегистрированные для сеанса WinSNMP.

Синтаксис

SNMPAPI_STATUS SNMPAPI_CALL SnmpRecvMsg(
  [in]  HSNMP_SESSION   session,
  [out] LPHSNMP_ENTITY  srcEntity,
  [out] LPHSNMP_ENTITY  dstEntity,
  [out] LPHSNMP_CONTEXT context,
  [out] LPHSNMP_PDU     PDU
);

Параметры

[in] session

Дескриптор сеанса WinSNMP.

[out] srcEntity

Указатель на переменную, которая получает дескриптор сущности, отправляющей сообщение. Обратите внимание, что параметр srcEntity для функции SnmpRegister указывает дескриптор для объекта управления, который регистрируется для уведомления о ловушке.

[out] dstEntity

Указатель на переменную, которая получает дескриптор сущности, получающей сообщение. Обратите внимание, что параметр dstEntity для функции SnmpRegister указывает дескриптор для объекта управления, который отправляет ловушки.

[out] context

Указатель на переменную, которая получает дескриптор контекста, который представляет собой набор ресурсов управляемого объекта. Сущность, указанная параметром srcEntity , выдает сообщение из этого контекста.

[out] PDU

Указатель на переменную, которая получает дескриптор компонента единицы данных протокола (PDU) сообщения.

Возвращаемое значение

Если функция выполняется успешно, возвращаемое значение SNMPAPI_SUCCESS, а выходные параметры содержат значения, указанные в предыдущих описаниях параметров.

Если функция завершается сбоем, возвращаемое значение будет SNMPAPI_FAILURE. Если функция завершается сбоем с расширенным кодом ошибки, указывающим на ошибку уровня сетевого транспорта, то есть ошибку, которая начинается с SNMPAPI_TL_, выходные параметры также содержат значения, указанные выше, что позволяет приложению WinSNMP корректно восстанавливаться.

Чтобы получить расширенные сведения об ошибке, вызовите SnmpGetLastError. Функция SnmpGetLastError может возвращать одну из следующих ошибок WinSNMP или сетевого транспортного уровня.

Код возврата Описание
SNMPAPI_NOT_INITIALIZED
Функция SnmpStartup не была успешно завершена.
SNMPAPI_ALLOC_ERROR
Произошла ошибка при выделении памяти.
SNMPAPI_SESSION_INVALID
Недопустимый параметр сеанса .
SNMPAPI_NOOP
В настоящее время в очереди указанного сеанса нет сообщений.
SNMPAPI_TL_NOT_INITIALIZED
Сетевой транспортный уровень не инициализирован.
SNMPAPI_TL_NOT_SUPPORTED
Сетевой транспортный уровень не поддерживает протокол SNMP.
SNMPAPI_TL_NOT_AVAILABLE
Произошел сбой сетевой подсистемы.
SNMPAPI_TL_RESOURCE_ERROR
Произошла ошибка ресурса на уровне сетевого транспорта.
SNMPAPI_TL_UNDELIVERABLE
Сущность, указанная параметром dstEntity , недоступна.
SNMPAPI_TL_SRC_INVALID
Сущность, указанная параметром srcEntity , не инициализирована.
SNMPAPI_TL_INVALID_PARAM
Вызов функции уровня сетевого транспорта получил недопустимый входной параметр.
SNMPAPI_TL_PDU_TOO_BIG
PDU слишком велик для передачи или получения на уровне сетевого транспорта.
SNMPAPI_TL_OTHER
Произошла неопределенная ошибка сетевого транспортного уровня.
SNMPAPI_OTHER_ERROR
Произошла неизвестная или неопределенная ошибка.
 

Дополнительные сведения см. в разделе Ошибки сетевого транспорта.

Комментарии

Функция SnmpCreateSession передает дескриптор окна приложения и идентификатор сообщения уведомления в реализацию Microsoft WinSNMP. Когда окно приложения получает сообщение уведомления, указанное параметром wMsg , приложение WinSNMP должно вызвать функцию SnmpRecvMsg с дескриптором сеанса, возвращенным SnmpCreateSession , чтобы получить входящую единицу данных протокола (PDU). Дополнительные сведения см. в разделе Сведения о сообщениях SNMP.

Функция SnmpRecvMsg создает экземпляры четырех объектов и выделяет их ресурсы: два дескриптора сущности, дескриптор контекста и дескриптор PDU. Дескриптор компонента списка привязок переменных возвращаемого PDU не создается, пока приложение WinSNMP не вызовет функцию SnmpGetPduData . Если ему больше не нужны ресурсы, возвращаемые SnmpRecvMsg , приложение WinSNMP должно освободить отдельные ресурсы с помощью функции WinSNMP, соответствующей ресурсу. Дополнительные сведения см. в разделах SnmpFreePdu, SnmpFreeEntity и SnmpFreeContext.

Когда реализация получает ловушки от сущности, работающей на платформе SNMP версии 1 (SNMPv1), она преобразует ловушки в формат SNMP версии 2C (SNMPv2C). Поэтому, когда SnmpRecvMsg доставляет ловушку, она всегда имеет формат SNMPv2C. Дополнительные сведения см. в разделах Преобразование ловушек из SNMPv1 в SNMPv2C и Задачи программирования WinSNMP.

Требования

Требование Значение
Минимальная версия клиента Windows 2000 Professional [только классические приложения]
Минимальная версия сервера Windows 2000 Server [только классические приложения]
Целевая платформа Windows
Header winsnmp.h
Библиотека Wsnmp32.lib
DLL Wsnmp32.dll

См. также раздел

SnmpFreeContext

SnmpFreeEntity

SnmpFreePdu

SnmpGetPduData

SnmpRegister

SnmpSendMsg

Функции WinSNMP

Общие сведения об API WinSNMP