Freigeben über


SnmpExtensionQuery-Funktion (snmp.h)

[SNMP ist für die Verwendung in den im Abschnitt Anforderungen angegebenen Betriebssystemen verfügbar. Es kann in nachfolgenden Versionen geändert oder entfernt werden. Verwenden Sie stattdessen die Windows-Remoteverwaltung, die Microsoft-Implementierung von WS-Man.]

Der Microsoft SNMP-Dienst ruft die SnmpExtensionQuery-Funktion auf, um SNMP-Anforderungen aufzulösen, die Variablen in einer oder mehreren der registrierten MIB-Unterstrukturen des SNMP-Erweiterungs-Agents enthalten. Diese Funktion ist ein Element der SNMP-Erweiterungs-Agent-API.

Hinweis Es wird empfohlen, die SnmpExtensionQueryExEx-Funktion zu verwenden, die SNMP-Datentypen der Version 2C (SNMPv2C) und mehrstufige SNMP-SET-Vorgänge unterstützt.
 

Syntax

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

Parameter

[in] bPduType

Gibt den PDU-Anforderungstyp snmp Version 1 (SNMPv1) an. Dieser Parameter kann einen der folgenden Werte annehmen.

Wert Bedeutung
SNMP_PDU_GET
Rufen Sie den Wert oder die Werte der angegebenen Variablen ab.
SNMP_PDU_GETNEXT
Rufen Sie den Wert oder die Werte des lexikografischen Nachfolgers der angegebenen Variablen ab.
SNMP_PDU_SET
Schreiben sie einen Wert innerhalb einer bestimmten Variablen.
 

Beachten Sie, dass PDU-Anforderungstypen umbenannt wurden. Weitere Informationen finden Sie unter SNMP-Variablentypen und Anforderungs-PDU-Typen.

[in, out] pVarBindList

Zeiger auf die Variablenbindungsliste.

[out] pErrorStatus

Zeiger auf eine Variable, in der der Fehler status Ergebnis zurückgegeben wird. Dieser Parameter kann einer der folgenden Werte sein, die von SNMPv1 definiert werden.

Wert Bedeutung
SNMP_ERRORSTATUS_NOERROR
Der Agent meldet, dass während der Übertragung keine Fehler aufgetreten sind.
SNMP_ERRORSTATUS_TOOBIG
Der Agent konnte die Ergebnisse des angeforderten Vorgangs nicht in einer einzelnen SNMP-Nachricht platzieren.
SNMP_ERRORSTATUS_NOSUCHNAME
Der angeforderte Vorgang identifizierte eine unbekannte Variable.
SNMP_ERRORSTATUS_BADVALUE
Der angeforderte Vorgang hat versucht, eine Variable zu ändern, aber er hat entweder einen Syntax- oder Wertfehler angegeben.
SNMP_ERRORSTATUS_READONLY
Der angeforderte Vorgang hat versucht, eine Variable zu ändern, die nicht gemäß dem Communityprofil der Variablen geändert werden durfte.
SNMP_ERRORSTATUS_GENERR
Während des angeforderten Vorgangs ist ein anderer Fehler als einer der hier aufgeführten aufgetreten.

[out] pErrorIndex

Zeiger auf eine Variable, in der das Fehlerindexergebnis zurückgegeben wird.

Rückgabewert

Wenn die Funktion erfolgreich ist, ist der Rückgabewert TRUE.

Wenn die Funktion fehlschlägt, ist der Rückgabewert FALSE.

Hinweise

Wenn der SNMP-Dienst eine SNMP-PDU-Anforderung empfängt, ruft er die SnmpExtensionQuery-Funktion auf, um die Anforderung zu verarbeiten. Der Erweiterungs-Agent muss die Regeln in RFC 1157 befolgen, um die Variablenbindungen aufzulösen oder einen Fehler zu generieren.

Wenn der Erweiterungs-Agent die Variablenbindungen für eine Get Next-Anforderung nicht auflösen kann, muss er das Namensfeld der SnmpVarBind-Struktur in den Wert des Objektbezeichners ändern, der unmittelbar auf den wert der derzeit unterstützten MIB-Unterstrukturansicht folgt. Wenn der Erweiterungs-Agent beispielsweise die Ansicht ".1.3.6.1.4.1.77.1" unterstützt, Eine Get Next-Anforderung für ".1.3.6.1.4.1.77.1.5.1" würde zu einem geänderten Namensfeld ".1.3.6.1.4.1.77.2" führen. Dies signalisiert dem SNMP-Dienst, den Versuch fortzusetzen, die Variablenbindungen mit anderen Erweiterungs-Agents aufzulösen.

Beachten Sie, dass der SNMP-Dienst und der Erweiterungs-Agent während eines Aufrufs der SnmpExtensionQuery-Funktion möglicherweise dynamisch zugeordneten Arbeitsspeicher austauschen müssen. Der Dienst ordnet den Objektbezeichner dynamisch in jeder SnmpVarBind-Struktur zu, die er an den Erweiterungs-Agent übergibt. Der Erweiterungs-Agent muss diesen Arbeitsspeicher jedoch freigeben, um den Objektbezeichner zu ersetzen, wenn er eine Anforderung zum Nächsten Abrufen verarbeitet. Der Erweiterungs-Agent ordnet dynamischen Arbeitsspeicher für Objekttypen mit variabler Länge zu. Der SNMP-Dienst gibt diesen Arbeitsspeicher frei, nachdem das Objekt in der Antwort-PDU platziert wurde.

Um Heapbeschädigungen und Speicherverluste zu vermeiden, müssen sowohl der SNMP-Dienst als auch der Erweiterungs-Agent Speicherbelegungsroutinen verwenden, die in den gleichen Heap aufgelöst werden. Der Erweiterungs-Agent muss die SnmpUtilMemAlloc-Funktion verwenden, um Arbeitsspeicher zuzuweisen, den er an den SNMP-Dienst übergibt. Sie muss die SnmpUtilMemFree-Funktion verwenden, um den Arbeitsspeicher freizugeben, den der Dienst an den Erweiterungs-Agent zurückgibt. Diese Funktionen befinden sich in der dynamischen Linkbibliothek des Hilfsprogramms SNMPAPI.DLL.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows 2000 Professional [nur Desktop-Apps]
Unterstützte Mindestversion (Server) Windows 2000 Server [nur Desktop-Apps]
Zielplattform Windows
Kopfzeile snmp.h

Weitere Informationen

SNMP-Funktionen

Simple Network Management-Protokoll (SNMP) – Übersicht

SnmpExtensionInit

SnmpUtilMemAlloc

SnmpUtilMemFree

SnmpVarBind