Compartilhar via


Função SnmpExtensionQuery (snmp.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.]

O serviço Microsoft SNMP chama a função SnmpExtensionQuery para resolve solicitações SNMP que contêm variáveis em uma ou mais subárvores MIB registradas do agente de extensão SNMP. Essa função é um elemento da API do Agente de Extensão SNMP.

Nota É recomendável que você use a função SnmpExtensionQueryEx , que dá suporte a tipos de dados SNMPv2C (SNMPv2C) E operações SNMP SET multifase.
 

Sintaxe

BOOL SNMP_FUNC_TYPE SnmpExtensionQuery(
  [in]      BYTE            bPduType,
  [in, out] SnmpVarBindList *pVarBindList,
  [out]     AsnInteger32    *pErrorStatus,
  [out]     AsnInteger32    *pErrorIndex
);

Parâmetros

[in] bPduType

Especifica o tipo de solicitação PDU SNMP versão 1 (SNMPv1). Esse parâmetro pode usar um dos valores a seguir.

Valor Significado
SNMP_PDU_GET
Recupere o valor ou os valores das variáveis especificadas.
SNMP_PDU_GETNEXT
Recupere o valor ou os valores do sucessor lexicográfico da variável especificada.
SNMP_PDU_SET
Escreva um valor em uma variável específica.
 

Observe que os tipos de solicitação de PDU foram renomeados. Para obter informações adicionais, consulte Tipos de variável SNMP e Tipos de PDU de solicitação.

[in, out] pVarBindList

Ponteiro para a lista de associações de variáveis.

[out] pErrorStatus

Ponteiro para uma variável na qual o erro status resultado será retornado. Esse parâmetro pode ser um dos seguintes valores definidos pelo SNMPv1.

Valor Significado
SNMP_ERRORSTATUS_NOERROR
O agente relata que nenhum erro ocorreu durante a transmissão.
SNMP_ERRORSTATUS_TOOBIG
O agente não pôde colocar os resultados da operação solicitada em uma única mensagem SNMP.
SNMP_ERRORSTATUS_NOSUCHNAME
A operação solicitada identificou uma variável desconhecida.
SNMP_ERRORSTATUS_BADVALUE
A operação solicitada tentou alterar uma variável, mas especificou uma sintaxe ou um erro de valor.
SNMP_ERRORSTATUS_READONLY
A operação 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_ERRORSTATUS_GENERR
Ocorreu um erro diferente de um dos listados aqui durante a operação solicitada.

[out] pErrorIndex

Ponteiro para uma variável na qual o resultado do índice de erro será retornado.

Retornar valor

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

Se a função falhar, o valor retornado será FALSE.

Comentários

Quando o serviço SNMP recebe uma solicitação de PDU SNMP, ele chama a função SnmpExtensionQuery para processar a solicitação. O agente de extensão deve seguir as regras no RFC 1157 para resolve as associações de variável ou gerar um erro.

Se o agente de extensão não puder resolve as associações de variável em uma solicitação Get Next, ele deverá alterar o campo nome da estrutura SnmpVarBind para o valor do identificador de objeto imediatamente após o da exibição de subárvore MIB com suporte no momento. Por exemplo, se o agente de extensão der suporte à exibição ".1.3.6.1.4.1.77.1", uma solicitação Get Next em ".1.3.6.1.1. 4.1.77.1.5.1" resultaria em um campo de nome modificado de ".1.3.6.1.4.1.77.2". Isso sinaliza o serviço SNMP para continuar a tentativa de resolve as associações de variável com outros agentes de extensão.

É importante observar que o serviço SNMP e o agente de extensão podem precisar trocar memória alocada dinamicamente durante uma chamada para a função SnmpExtensionQuery . O serviço aloca dinamicamente o identificador de objeto em cada estrutura SnmpVarBind que ele passa para o agente de extensão. No entanto, o agente de extensão deve liberar essa memória para substituir o identificador de objeto ao processar uma solicitação Get Next . O agente de extensão aloca memória dinâmica para tipos de objeto de comprimento variável. O serviço SNMP libera essa memória depois que o objeto é colocado na PDU de resposta.

Para evitar vazamentos de memória e corrupção de heap, o serviço SNMP e o agente de extensão devem usar rotinas de alocação de memória que resolve para o mesmo heap. O agente de extensão deve usar a função SnmpUtilMemAlloc para alocar memória que ele passa para o serviço SNMP. Ele deve usar a função SnmpUtilMemFree para liberar a memória que o serviço passa de volta para o agente de extensão. Essas funções estão localizadas na biblioteca de vínculo dinâmico do utilitário SNMPAPI.DLL.

Requisitos

Requisito Valor
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 snmp.h

Confira também

Funções SNMP

Visão geral do Protocolo SNMP

Snmpextensioninit

SnmpUtilMemAlloc

SnmpUtilMemFree

Snmpvarbind