Функция 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 или уровня сетевого транспорта.
Код возврата | Описание |
---|---|
|
Не удалось выполнить функцию SnmpStartup . |
|
Ошибка при выделении памяти. |
|
Недопустимый параметр сеанса . |
|
Один или оба параметра сущности недопустимы. |
|
Недопустимый параметр контекста . |
|
Недопустимый параметр PDU . |
|
Операция, указанная в поле PDU_type PDU, не подходит для конечной сущности. Дополнительные сведения см. в разделе "Примечания". |
|
Уровень сетевого транспорта не инициализирован. |
|
Сетевой транспортный уровень не поддерживает протокол SNMP. |
|
Произошел сбой сетевой подсистемы. |
|
На уровне сетевого транспорта произошла ошибка ресурса. |
|
Сущность, указанная параметром srcEntity , не инициализирована. |
|
Вызов функции сетевого транспортного уровня получил недопустимый входной параметр. |
|
PDU слишком велик для отправки или получения на уровне сетевого транспорта. |
|
Произошла неопределенная ошибка уровня сетевого транспорта. |
|
Произошла неизвестная или неопределенная ошибка. |
Дополнительные сведения см. в разделе Ошибки сетевого транспорта.
Комментарии
Функция 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 |