Condividi tramite


Funzione SnmpExtensionQuery (snmp.h)

[SNMP è disponibile per l'uso nei sistemi operativi specificati nella sezione Requisiti. È possibile che in versioni successive sia stata modificata o non sia più disponibile. Usare invece Gestione remota Windows, ovvero l'implementazione Microsoft di WS-Man.

Il servizio Microsoft SNMP chiama la funzione SnmpExtensionQuery per risolvere le richieste SNMP che contengono variabili all'interno di uno o più sottoalberi MIB registrati dall'agente di estensione SNMP. Questa funzione è un elemento dell'API dell'agente di estensione SNMP.

Nota È consigliabile usare la funzione SnmpExtensionQueryEx , che supporta i tipi di dati SNMP versione 2C (SNMPv2C) e le operazioni SNMP SET multifase.
 

Sintassi

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

Parametri

[in] bPduType

Specifica il tipo di richiesta PDU della versione 1 (SNMPv1). Questo parametro può avere uno dei valori seguenti.

Valore Significato
SNMP_PDU_GET
Recuperare il valore o i valori delle variabili specificate.
SNMP_PDU_GETNEXT
Recuperare il valore o i valori del successore lessicografico della variabile specificata.
SNMP_PDU_SET
Scrivere un valore all'interno di una variabile specifica.
 

Si noti che i tipi di richiesta PDU sono stati rinominati. Per altre informazioni, vedere Tipi di variabili SNMP e tipi PDU di richiesta.

[in, out] pVarBindList

Puntatore all'elenco associazioni di variabili.

[out] pErrorStatus

Puntatore a una variabile in cui verrà restituito il risultato dello stato dell'errore. Questo parametro può essere uno dei valori seguenti definiti da SNMPv1.

Valore Significato
SNMP_ERRORSTATUS_NOERROR
L'agente segnala che non si sono verificati errori durante la trasmissione.
SNMP_ERRORSTATUS_TOOBIG
L'agente non è riuscito a inserire i risultati dell'operazione richiesta in un singolo messaggio SNMP.
SNMP_ERRORSTATUS_NOSUCHNAME
L'operazione richiesta ha identificato una variabile sconosciuta.
SNMP_ERRORSTATUS_BADVALUE
L'operazione richiesta tentava di modificare una variabile, ma specificava un errore di sintassi o valore.
SNMP_ERRORSTATUS_READONLY
L'operazione richiesta ha tentato di modificare una variabile che non è stata consentita per modificare in base al profilo della community della variabile.
SNMP_ERRORSTATUS_GENERR
Si è verificato un errore diverso da uno di quelli elencati qui durante l'operazione richiesta.

[out] pErrorIndex

Puntatore a una variabile in cui verrà restituito il risultato dell'indice di errore.

Valore restituito

Se la funzione ha esito positivo, il valore restituito è TRUE.

Se la funzione ha esito negativo, il valore restituito è FALSE.

Commenti

Quando il servizio SNMP riceve una richiesta PDU SNMP, chiama la funzione SnmpExtensionQuery per elaborare la richiesta. L'agente di estensione deve seguire le regole in RFC 1157 per risolvere le associazioni di variabili o generare un errore.

Se l'agente di estensione non riesce a risolvere le associazioni di variabili in una richiesta Get Next , deve modificare il campo nome della struttura SnmpVarBind sul valore dell'identificatore dell'oggetto immediatamente dopo quello della visualizzazione sottoalbero MIB attualmente supportata. Ad esempio, se l'agente di estensione supporta la visualizzazione ".1.3.6.1.4.1.77.1", una richiesta Get Next su ".1.3.6.1.4.1.77.1.5.1" comporta un campo nome modificato di ".1.3.6.1.4.1.77.2". Questo segnala al servizio SNMP di continuare il tentativo di risolvere le associazioni di variabili con altri agenti di estensione.

È importante notare che il servizio SNMP e l'agente di estensione potrebbero dover scambiare memoria allocata dinamicamente durante una chiamata alla funzione SnmpExtensionQuery . Il servizio alloca dinamicamente l'identificatore dell'oggetto in ogni struttura SnmpVarBind che passa all'agente di estensione. Tuttavia, l'agente di estensione deve rilasciare questa memoria per sostituire l'identificatore dell'oggetto quando elabora una richiesta Get Next . L'agente di estensione alloca la memoria dinamica per i tipi di oggetti a lunghezza variabile. Il servizio SNMP rilascia questa memoria dopo che l'oggetto viene inserito nella risposta PDU.

Per evitare perdite di memoria e danneggiamento dell'heap, sia il servizio SNMP che l'agente di estensione devono usare le routine di allocazione della memoria che si risolvono nello stesso heap. L'agente di estensione deve usare la funzione SnmpUtilMemAlloc per allocare memoria che passa al servizio SNMP. Deve usare la funzione SnmpUtilMemFree per rilasciare la memoria che il servizio passa all'agente di estensione. Queste funzioni si trovano nella libreria di collegamenti dinamici dell'utilità SNMPAPI.DLL.

Requisiti

Requisito Valore
Client minimo supportato Windows 2000 Professional [solo app desktop]
Server minimo supportato Windows 2000 Server [solo app desktop]
Piattaforma di destinazione Windows
Intestazione snmp.h

Vedi anche

Funzioni SNMP

Panoramica del protocollo Simple Network Management Protocol (SNMP)

SnmpExtensionInit

SnmpUtilMemAlloc

SnmpUtilMemFree

SnmpVarBind