Partager via


SnmpExtensionQuery, fonction (snmp.h)

[SNMP est disponible pour une utilisation dans les systèmes d’exploitation spécifiés dans la section Configuration requise. Il sera peut-être modifié ou indisponible dans les versions ultérieures. Utilisez plutôt Windows Remote Management, qui est l’implémentation Microsoft de WS-Man.]

Le service SNMP Microsoft appelle la fonction SnmpExtensionQuery pour résoudre les requêtes SNMP qui contiennent des variables dans une ou plusieurs des sous-arborescences MIB inscrites de l’agent d’extension SNMP. Cette fonction est un élément de l’API de l’agent d’extension SNMP.

Note Il est recommandé d’utiliser la fonction SnmpExtensionQueryEx , qui prend en charge les types de données SNMP version 2C (SNMPv2C) et les opérations SET SNMP multiphase.
 

Syntaxe

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

Paramètres

[in] bPduType

Spécifie le type de requête PDU SNMP version 1 (SNMPv1). Ce paramètre peut prendre les valeurs suivantes.

Valeur Signification
SNMP_PDU_GET
Récupérez la ou les valeurs des variables spécifiées.
SNMP_PDU_GETNEXT
Récupérez la ou les valeurs du successeur lexicographique de la variable spécifiée.
SNMP_PDU_SET
Écrivez une valeur dans une variable spécifique.
 

Notez que les types de requêtes PDU ont été renommés. Pour plus d’informations, consultez Types de variables SNMP et Types PDU de requête.

[in, out] pVarBindList

Pointeur vers la liste des liaisons de variables.

[out] pErrorStatus

Pointeur vers une variable dans laquelle l’erreur status résultat sera retourné. Ce paramètre peut être l’une des valeurs suivantes définies par SNMPv1.

Valeur Signification
SNMP_ERRORSTATUS_NOERROR
L’agent signale qu’aucune erreur ne s’est produite pendant la transmission.
SNMP_ERRORSTATUS_TOOBIG
L’agent n’a pas pu placer les résultats de l’opération demandée dans un seul message SNMP.
SNMP_ERRORSTATUS_NOSUCHNAME
L’opération demandée a identifié une variable inconnue.
SNMP_ERRORSTATUS_BADVALUE
L’opération demandée a tenté de modifier une variable, mais elle a spécifié une erreur de syntaxe ou de valeur.
SNMP_ERRORSTATUS_READONLY
L’opération demandée a tenté de modifier une variable qui n’était pas autorisée à changer en fonction du profil de la communauté de la variable.
SNMP_ERRORSTATUS_GENERR
Une erreur autre que l’une de celles répertoriées ici s’est produite pendant l’opération demandée.

[out] pErrorIndex

Pointeur vers une variable dans laquelle le résultat de l’index d’erreur est retourné.

Valeur retournée

Si la fonction réussit, la valeur de retour est TRUE.

Si la fonction échoue, la valeur de retour est FALSE.

Remarques

Lorsque le service SNMP reçoit une requête PDU SNMP, il appelle la fonction SnmpExtensionQuery pour traiter la demande. L’agent d’extension doit suivre les règles de la RFC 1157 pour résoudre les liaisons de variable ou générer une erreur.

Si l’agent d’extension ne peut pas résoudre les liaisons de variable sur une requête Get Next , il doit remplacer le champ name de la structure SnmpVarBind par la valeur de l’identificateur d’objet immédiatement après celui de la vue de sous-arborescence MIB actuellement prise en charge. Par exemple, si l’agent d’extension prend en charge la vue .1.3.6.1.4.1.77.1 « , une requête Get Next sur « .1.3.6.1.4.1.77.1.5.1 » entraîne la modification du champ de nom .1.3.6.1.4.1.77.2 ». Cela indique au service SNMP de poursuivre la tentative de résolution des liaisons de variable avec d’autres agents d’extension.

Il est important de noter que le service SNMP et l’agent d’extension peuvent avoir besoin d’échanger de la mémoire allouée dynamiquement pendant un appel à la fonction SnmpExtensionQuery . Le service alloue dynamiquement l’identificateur d’objet dans chaque structure SnmpVarBind qu’il transmet à l’agent d’extension. Toutefois, l’agent d’extension doit libérer cette mémoire pour remplacer l’identificateur d’objet lorsqu’il traite une requête Get Next . L’agent d’extension alloue de la mémoire dynamique pour les types d’objets de longueur variable. Le service SNMP libère cette mémoire une fois l’objet placé dans la PDU de réponse.

Pour éviter l’altération du tas et les fuites de mémoire, le service SNMP et l’agent d’extension doivent utiliser des routines d’allocation de mémoire qui se résolvent sur le même tas. L’agent d’extension doit utiliser la fonction SnmpUtilMemAlloc pour allouer la mémoire qu’il transmet au service SNMP. Il doit utiliser la fonction SnmpUtilMemFree pour libérer la mémoire que le service transmet à l’agent d’extension. Ces fonctions se trouvent dans la bibliothèque de liens dynamiques de l’utilitaire SNMPAPI.DLL.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows 2000 Professionnel [applications de bureau uniquement]
Serveur minimal pris en charge Windows 2000 Server [applications de bureau uniquement]
Plateforme cible Windows
En-tête snmp.h

Voir aussi

Fonctions SNMP

Vue d’ensemble du protocole SNMP (Simple Network Management Protocol)

SnmpExtensionInit

SnmpUtilMemAlloc

SnmpUtilMemFree

SnmpVarBind