Compartilhar via


Função SnmpGetPduData (winsnmp.h)

[O SNMP está disponível para uso nos sistemas operacionais especificados na seção Requisitos. Ele poderá ser alterado ou ficar indisponível em versões subsequentes. Em vez disso, use o Gerenciamento Remoto do Windows, que é a implementação da Microsoft do WS-Man.]

A função WinSNMP SnmpGetPduData retorna campos de dados selecionados de uma PDU (unidade de dados de protocolo SNMP) especificada.

Sintaxe

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
);

Parâmetros

[in] PDU

Manipule para a PDU SNMP.

[out] PDU_type

Ponteiro para uma variável que recebe o campo PDU_type da PDU especificada. Esse parâmetro pode ser NULL ou um dos valores a seguir.

Valor Significado
SNMP_PDU_GET
Pesquise e recupere um valor de uma variável SNMP especificada.
SNMP_PDU_GETNEXT
Pesquise e recupere o valor de uma variável SNMP sem saber o nome exato da variável.
SNMP_PDU_RESPONSE
Responder a um SNMP_PDU_GET ou uma solicitação de SNMP_PDU_GETNEXT .
SNMP_PDU_SET
Armazene um valor em uma variável SNMP especificada.
SNMP_PDU_GETBULK
Pesquise e recupere vários valores com uma única solicitação.
SNMP_PDU_TRAP
Alerta o sistema de gerenciamento para um evento extraordinário em SNMPv2C.

[out] request_id

Ponteiro para uma variável que recebe o campo request_id da PDU especificada. Este parâmetro pode ser NULL.

[out] error_status

Ponteiro para uma variável que recebe o campo error_status da PDU especificada. Se o parâmetro PDU_type for igual a SNMP_PDU_GETBULK, esse parâmetro receberá o valor do campo non_repeaters da PDU.

Esse parâmetro pode ser NULL ou um dos valores a seguir. Os primeiros seis erros são comuns às estruturas SNMPv1 (SNMPv1) e SNMMP versão 2C (SNMPv2C). Os erros restantes estão disponíveis somente em SNMPv2C.

Código do erro Significado
SNMP_ERROR_NOERROR
O agente relata que nenhum erro ocorreu durante a transmissão.
SNMP_ERROR_TOOBIG
O agente não pôde colocar os resultados da operação SNMP solicitada em uma única mensagem SNMP.
SNMP_ERROR_NOSUCHNAME
A operação SNMP solicitada identificou uma variável desconhecida.
SNMP_ERROR_BADVALUE
A operação SNMP solicitada tentou alterar uma variável, mas especificou uma sintaxe ou um erro de valor.
SNMP_ERROR_READONLY
A operação SNMP solicitada tentou alterar uma variável que não tinha permissão para ser alterada, de acordo com o perfil da comunidade da variável.
SNMP_ERROR_GENERR
Ocorreu um erro diferente de um dos listados aqui durante a operação SNMP solicitada.
SNMP_ERROR_NOACCESS
A variável SNMP especificada não está acessível.
SNMP_ERROR_WRONGTYPE
O valor especifica um tipo inconsistente com o tipo necessário para a variável.
SNMP_ERROR_WRONGLENGTH
O valor especifica um comprimento inconsistente com o comprimento necessário para a variável.
SNMP_ERROR_WRONGENCODING
O valor contém uma codificação ASN.1 (Abstract Syntax Notation One) inconsistente com a marca ASN.1 do campo.
SNMP_ERROR_WRONGVALUE
O valor não pode ser atribuído à variável.
SNMP_ERROR_NOCREATION
A variável não existe e o agente não pode criá-la.
SNMP_ERROR_INCONSISTENTVALUE
O valor é inconsistente com os valores de outros objetos gerenciados.
SNMP_ERROR_RESOURCEUNAVAILABLE
Atribuir o valor à variável requer a alocação de recursos que estão indisponíveis no momento.
SNMP_ERROR_COMMITFAILED
Nenhum erro de validação ocorreu, mas nenhuma variável foi atualizada.
SNMP_ERROR_UNDOFAILED
Nenhum erro de validação ocorreu. Algumas variáveis foram atualizadas porque não foi possível desfazer sua atribuição.
SNMP_ERROR_AUTHORIZATIONERROR
Ocorreu um erro de autorização.
SNMP_ERROR_NOTWRITABLE
A variável existe, mas o agente não pode modificá-la.
SNMP_ERROR_INCONSISTENTNAME
A variável não existe; o agente não pode criá-lo porque a instância de objeto nomeado é inconsistente com os valores de outros objetos gerenciados.

[out] error_index

Ponteiro para uma variável que recebe o campo error_index da PDU especificada.

Se o parâmetro PDU_type for igual a SNMP_PDU_GETBULK, esse parâmetro receberá o valor do campo max_repetitions da PDU especificada. Este parâmetro pode ser NULL.

[out] varbindlist

Ponteiro para uma variável que recebe um identificador para o campo de lista de associações de variáveis da PDU especificada. Este parâmetro pode ser NULL. Para obter informações adicionais, consulte a seção Comentários a seguir.

Valor retornado

Se a função for bem-sucedida, o valor retornado será SNMPAPI_SUCCESS.

Se a função falhar, o valor retornado será SNMPAPI_FAILURE. Para obter informações de erro estendidas, chame SnmpGetLastError. A função SnmpGetLastError pode retornar um dos erros a seguir.

Código de retorno Descrição
SNMPAPI_NOT_INITIALIZED
A função SnmpStartup não foi concluída com êxito.
SNMPAPI_ALLOC_ERROR
Ocorreu um erro durante a alocação de memória.
SNMPAPI_NOOP
Todos os parâmetros de saída são NULL. A operação SNMP não foi executada.
SNMPAPI_PDU_INVALID
O tipo de PDU é inválido.
SNMPAPI_OTHER_ERROR
Ocorreu um erro desconhecido ou indefinido.

Comentários

Todos os parâmetros da função SnmpGetPduData são necessários. No entanto, todos os parâmetros, exceto o parâmetro PDU , podem ser NULL. Nos parâmetros que o aplicativo passa como NULL, a função SnmpGetPduData não retorna um valor.

A função SnmpGetPduData sempre retornará um identificador para um novo objeto de lista de associações variáveis se o parâmetro varbindlist não for NULL. Além disso, se o parâmetro PDU especificar uma nova PDU, a função também anexará um identificador à nova PDU.

Quando um aplicativo chama SnmpGetPduData com um parâmetro varbindlist que não é NULL, mas o parâmetro PDU especifica uma PDU existente, a função retorna um identificador para uma nova lista de associações de variáveis duplicadas. A chamada de função não perturba o identificador anexado à PDU existente. Uma PDU existente é aquela que um aplicativo cria com uma chamada para a função SnmpCreatePdu ou uma que o aplicativo recebe e lê usando uma chamada para SnmpGetPduData.

Quando um aplicativo cria uma PDU com SnmpCreatePdu ou depois que o aplicativo lê uma PDU usando SnmpGetPduData, a implementação do Microsoft WinSNMP espera que o aplicativo "conheça" os valores dos campos de PDU. Se um aplicativo ler uma PDU uma segunda vez com SnmpGetPduData, a chamada resultará em uma cópia da lista de associações de variáveis da PDU especificada. Esse tipo de chamada para SnmpGetPduData também duplica o identificador para a PDU.

Requisitos

   
Cliente mínimo com suporte Windows 2000 Professional [somente aplicativos da área de trabalho]
Servidor mínimo com suporte Windows 2000 Server [somente aplicativos da área de trabalho]
Plataforma de Destino Windows
Cabeçalho winsnmp.h
Biblioteca Wsnmp32.lib
DLL Wsnmp32.dll

Confira também

SnmpCreatePdu

SnmpDuplicateVbl

Funções WinSNMP

Visão geral da API do WinSNMP