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


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

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

Функция SnmpGetPduData WinSNMP возвращает выбранные поля данных из указанной единицы данных протокола SNMP (PDU).

Синтаксис

SNMPAPI_STATUS SNMPAPI_CALL SnmpGetPduData(
  [in]  HSNMP_PDU   PDU,
  [out] smiLPINT    PDU_type,
  [out] smiLPINT32  request_id,
  [out] smiLPINT    error_status,
  [out] smiLPINT    error_index,
  [out] LPHSNMP_VBL varbindlist
);

Параметры

[in] PDU

Дескриптор SNMP PDU.

[out] PDU_type

Указатель на переменную, которая получает поле PDU_type указанного PDU. Этот параметр может иметь значение NULL или одно из следующих значений.

Значение Значение
SNMP_PDU_GET
Поиск и получение значения из указанной переменной SNMP.
SNMP_PDU_GETNEXT
Выполните поиск и получите значение переменной SNMP, не зная точного имени переменной.
SNMP_PDU_RESPONSE
Ответ на SNMP_PDU_GET или запрос SNMP_PDU_GETNEXT .
SNMP_PDU_SET
Сохраните значение в указанной переменной SNMP.
SNMP_PDU_GETBULK
Выполните поиск и получение нескольких значений с помощью одного запроса.
SNMP_PDU_TRAP
Оповещает систему управления о чрезвычайном событии в SNMPv2C.

[out] request_id

Указатель на переменную, которая получает поле request_id указанного PDU. Этот параметр может принимать значение NULL.

[out] error_status

Указатель на переменную, которая получает поле error_status указанного PDU. Если параметр PDU_type равен SNMP_PDU_GETBULK, этот параметр получает значение поля non_repeaters PDU.

Этот параметр может иметь значение NULL или одно из следующих значений. Первые шесть ошибок являются общими для платформ SNMP версии 1 (SNMPv1) и SNMP версии 2C (SNMPv2C). Остальные ошибки доступны только в SNMPv2C.

Код ошибки Значение
SNMP_ERROR_NOERROR
Агент сообщает, что во время передачи не произошло никаких ошибок.
SNMP_ERROR_TOOBIG
Агенту не удалось поместить результаты запрошенной операции SNMP в одно сообщение SNMP.
SNMP_ERROR_NOSUCHNAME
Запрошенная операция SNMP идентифицировала неизвестную переменную.
SNMP_ERROR_BADVALUE
Запрошенная операция SNMP попыталась изменить переменную, но указала ошибку синтаксиса или значения.
SNMP_ERROR_READONLY
Запрошенная операция SNMP попыталась изменить переменную, которую нельзя было изменить в соответствии с профилем сообщества переменной.
SNMP_ERROR_GENERR
Во время запрошенной операции SNMP произошла ошибка, отличавшаяся от одной из перечисленных здесь.
SNMP_ERROR_NOACCESS
Указанная переменная SNMP недоступна.
SNMP_ERROR_WRONGTYPE
Значение указывает тип, несовместимый с типом, необходимым для переменной.
SNMP_ERROR_WRONGLENGTH
Значение указывает длину, которая не соответствует длине, необходимой для переменной.
SNMP_ERROR_WRONGENCODING
Значение содержит кодировку ASN.1, которая несовместима с тегом ASN.1 поля.
SNMP_ERROR_WRONGVALUE
Значение не может быть присвоено переменной.
SNMP_ERROR_NOCREATION
Переменная не существует, и агент не может создать ее.
SNMP_ERROR_INCONSISTENTVALUE
Значение несовместимо со значениями других управляемых объектов.
SNMP_ERROR_RESOURCEUNAVAILABLE
Чтобы присвоить значение переменной, необходимо выделить ресурсы, которые в настоящее время недоступны.
SNMP_ERROR_COMMITFAILED
Ошибок проверки не произошло, но переменные не были обновлены.
SNMP_ERROR_UNDOFAILED
Ошибок проверки не произошло. Некоторые переменные были обновлены, так как невозможно было отменить их назначение.
SNMP_ERROR_AUTHORIZATIONERROR
Произошла ошибка авторизации.
SNMP_ERROR_NOTWRITABLE
Переменная существует, но агент не может ее изменить.
SNMP_ERROR_INCONSISTENTNAME
Переменная не существует; Агент не может создать его, так как именованный экземпляр объекта не соответствует значениям других управляемых объектов.

[out] error_index

Указатель на переменную, которая получает поле error_index указанного PDU.

Если параметр PDU_type равен SNMP_PDU_GETBULK, этот параметр получает значение поля max_repetitions указанного PDU. Этот параметр может принимать значение NULL.

[out] varbindlist

Указатель на переменную, которая получает дескриптор поля списка привязок переменной указанного PDU. Этот параметр может принимать значение NULL. Дополнительные сведения см. в следующем разделе Примечаний.

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

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

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

Код возврата Описание
SNMPAPI_NOT_INITIALIZED
Функция SnmpStartup не была успешно завершена.
SNMPAPI_ALLOC_ERROR
Произошла ошибка при выделении памяти.
SNMPAPI_NOOP
Все выходные параметры имеют значение NULL. Операция SNMP не была выполнена.
SNMPAPI_PDU_INVALID
Недопустимый тип PDU.
SNMPAPI_OTHER_ERROR
Произошла неизвестная или неопределенная ошибка.

Комментарии

Все параметры функции SnmpGetPduData являются обязательными. Однако все параметры, кроме параметра PDU , могут иметь значение NULL. В параметрах, которые приложение передает как NULL, функция SnmpGetPduData не возвращает значение.

Функция SnmpGetPduData всегда возвращает дескриптор новому объекту списка привязок переменных, если параметр varbindlist не равен NULL. Кроме того, если параметр PDU указывает новый PDU, функция также присоединяет дескриптор к новому PDU.

Когда приложение вызывает SnmpGetPduData с параметром varbindlist , который не имеет значения NULL, но параметр PDU указывает существующий PDU, функция возвращает дескриптор в новый список повторяющихся привязок переменных. Вызов функции не нарушает дескриптор, подключенный к существующему PDU. Существующий PDU — это тот, который приложение создает с помощью вызова функции SnmpCreatePdu , или тот, который приложение получает и затем считывает с помощью вызова SnmpGetPduData.

Когда приложение создает PDU с snmpCreatePdu или после того, как приложение считывает PDU с помощью SnmpGetPduData, реализация Microsoft WinSNMP ожидает, что приложение "знает" значения полей PDU. Если приложение считывает PDU во второй раз с помощью SnmpGetPduData, вызов приводит к копированию списка привязок переменных указанного PDU. Этот тип вызова SnmpGetPduData также дублирует дескриптор PDU.

Требования

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

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

SnmpCreatePdu

SnmpDuplicateVbl

Функции WinSNMP

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