Поделиться через


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

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

Приложение WinSNMP вызывает функцию SnmpSendMsg , чтобы запросить, чтобы реализация Microsoft WinSNMP передала единицу данных протокола SNMP (PDU) в виде SNMP-сообщения. Приложение WinSNMP указывает исходную сущность, сущность назначения и контекст для запроса.

Если приложение WinSNMP ожидает PDU в ответ на запрос SnmpSendMsg , оно должно получить PDU. Для этого приложение должно вызвать функцию SnmpRecvMsg , используя дескриптор сеанса, возвращенный SnmpCreateSession.

Синтаксис

SNMPAPI_STATUS SNMPAPI_CALL SnmpSendMsg(
  [in] HSNMP_SESSION session,
  [in] HSNMP_ENTITY  srcEntity,
  [in] HSNMP_ENTITY  dstEntity,
  [in] HSNMP_CONTEXT context,
  [in] HSNMP_PDU     PDU
);

Параметры

[in] session

Обработка в сеансе WinSNMP.

[in] srcEntity

Выполните обработку для сущности управления, которая инициирует запрос на отправку SNMP-сообщения.

[in] dstEntity

Обработка целевой сущности, которая будет отвечать на запрос SNMP.

[in] context

Обработка в контексте (наборе ресурсов управляемых объектов), которыми управляет целевая сущность управления.

[in] PDU

Обработка для единицы данных протокола, содержащей запрос операции SNMP.

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

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

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

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

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

Комментарии

Функция SnmpSendMsg выполняется асинхронно и поэтому возвращает немедленно.

Реализация уведомляет приложение WinSNMP о завершении асинхронного запроса. Реализация делает это путем отправки сообщения уведомления в окно, указанное параметрами wMsg и hWnd , соответственно, в начальном вызове SnmpCreateSession для сеанса . Когда окно приложения получает уведомление, приложение WinSNMP должно получить входящий PDU. Приложение делает это путем вызова функции SnmpRecvMsg с дескриптором сеанса, возвращенным SnmpCreateSession.

Когда приложение WinSNMP вызывает функцию SnmpSendMsg , реализация определяет, какой протокол сетевого транспорта и платформа версии SNMP следует использовать для выполнения запроса на передачу. Реализация определяет это путем сопоставления своих возможностей со свойствами, связанными с запрашивающим сеансом и с целевой сущностью управления. Эти сведения доступны из значений в базе данных реализации.

Если приложение WinSNMP запрашивает функциональные возможности, доступные в платформе SNMP версии 2C (SNMPv2C), но целевая сущность использует платформу SNMP версии 1 (SNMPv1), реализация пытается преобразовать запрос в SNMPv1. Для этого в реализации используются процедуры, определенные в RFC1908 "Сосуществование между версиями 1 и 2 платформы управления сетями, стандартной для Интернета". Если преобразование невозможно, SnmpSendMsg завершается сбоем с расширенным кодом ошибки SNMPAPI_OPERATION_INVALID. Такая ситуация возникает, например, когда приложение пытается отправить PDU с типом данных SNMP_PDU_InformRequest целевому объекту SNMPv1.

Дополнительные сведения см. в разделах Задачи программирования WinSNMP и Сведения о сообщениях SNMP.

Требования

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

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

SnmpCreateSession

SnmpRecvMsg

Функции WinSNMP

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