Compartir a través de


Función SnmpExtensionQuery (snmp.h)

[SNMP está disponible para su uso en los sistemas operativos especificados en la sección Requisitos. En versiones posteriores podría modificarse o no estar disponible. En su lugar, use administración remota de Windows, que es la implementación de Microsoft de WS-Man.]

El servicio SNMP de Microsoft llama a la función SnmpExtensionQuery para resolver las solicitudes SNMP que contienen variables dentro de uno o varios de los subárboles MIB registrados del agente de extensión SNMP. Esta función es un elemento de la API del Agente de extensión SNMP.

Nota Se recomienda usar la función SnmpExtensionQueryEx , que admite los tipos de datos snmp versión 2C (SNMPv2C) y las operaciones SET snmp multifase.
 

Sintaxis

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

Parámetros

[in] bPduType

Especifica el tipo de solicitud PDU de la versión 1 (SNMPv1) de SNMP. Este parámetro puede ser uno de los valores siguientes.

Valor Significado
SNMP_PDU_GET
Recupere el valor o los valores de las variables especificadas.
SNMP_PDU_GETNEXT
Recupere el valor o los valores del sucesor lexicográfico de la variable especificada.
SNMP_PDU_SET
Escriba un valor dentro de una variable específica.
 

Tenga en cuenta que se ha cambiado el nombre de los tipos de solicitud PDU. Para obtener más información, vea Tipos de variables SNMP y Solicitar tipos PDU.

[in, out] pVarBindList

Puntero a la lista de enlaces de variables.

[out] pErrorStatus

Puntero a una variable en la que se devolverá el resultado del estado del error. Este parámetro puede ser uno de los siguientes valores definidos por SNMPv1.

Valor Significado
SNMP_ERRORSTATUS_NOERROR
El agente informa de que no se produjeron errores durante la transmisión.
SNMP_ERRORSTATUS_TOOBIG
El agente no pudo colocar los resultados de la operación solicitada en un único mensaje SNMP.
SNMP_ERRORSTATUS_NOSUCHNAME
La operación solicitada identificó una variable desconocida.
SNMP_ERRORSTATUS_BADVALUE
La operación solicitada intentó cambiar una variable, pero especificó un error de sintaxis o valor.
SNMP_ERRORSTATUS_READONLY
La operación solicitada intentó cambiar una variable que no tenía permiso para cambiar según el perfil de comunidad de la variable.
SNMP_ERRORSTATUS_GENERR
Error distinto de uno de los enumerados aquí durante la operación solicitada.

[out] pErrorIndex

Puntero a una variable en la que se devolverá el resultado del índice de error.

Valor devuelto

Si la función se realiza correctamente, el valor devuelto es TRUE.

Si se produce un error en la función, el valor devuelto es FALSE.

Comentarios

Cuando el servicio SNMP recibe una solicitud PDU snmp, llama a la función SnmpExtensionQuery para procesar la solicitud. El agente de extensión debe seguir las reglas de RFC 1157 para resolver los enlaces de variables o generar un error.

Si el agente de extensión no puede resolver los enlaces de variables en una solicitud Get Next , debe cambiar el campo de nombre de la estructura SnmpVarBind al valor del identificador de objeto inmediatamente después del de la vista de subárbol MIB admitida actualmente. Por ejemplo, si el agente de extensión admite la vista ".1.3.6.1.4.1.77.1", una solicitud Get Next en ".1.3.6.1.4.1.77.1.5.1" daría como resultado un campo de nombre modificado de ".1.3.6.1.4.1.77.2". Esto indica al servicio SNMP que continúe el intento de resolver los enlaces de variables con otros agentes de extensión.

Es importante tener en cuenta que el servicio SNMP y el agente de extensión pueden necesitar intercambiar memoria asignada dinámicamente durante una llamada a la función SnmpExtensionQuery . El servicio asigna dinámicamente el identificador de objeto en cada estructura SnmpVarBind que pasa al agente de extensión. Sin embargo, el agente de extensión debe liberar esta memoria para reemplazar el identificador de objeto cuando procesa una solicitud Get Next . El agente de extensión asigna memoria dinámica para los tipos de objeto de longitud variable. El servicio SNMP libera esta memoria después de colocar el objeto en la PDU de respuesta.

Para evitar daños en el montón y pérdidas de memoria, tanto el servicio SNMP como el agente de extensión deben usar rutinas de asignación de memoria que se resuelvan en el mismo montón. El agente de extensión debe usar la función SnmpUtilMemAlloc para asignar memoria que pasa al servicio SNMP. Debe usar la función SnmpUtilMemFree para liberar la memoria que el servicio pasa al agente de extensión. Estas funciones se encuentran en la biblioteca de vínculos dinámicos de la utilidad SNMPAPI.DLL.

Requisitos

Requisito Value
Cliente mínimo compatible Windows 2000 Professional [solo aplicaciones de escritorio]
Servidor mínimo compatible Windows 2000 Server [solo aplicaciones de escritorio]
Plataforma de destino Windows
Encabezado snmp.h

Consulte también

Funciones SNMP

Introducción al Protocolo simple de administración de redes (SNMP)

SnmpExtensionInit

SnmpUtilMemAlloc

SnmpUtilMemFree

SnmpVarBind