Compartir a través de


Función NdisOidRequest (ndis.h)

La función NdisOidRequest reenvía una solicitud a los controladores subyacentes para consultar las funcionalidades o el estado de un adaptador o establecer el estado de un adaptador.

Sintaxis

NDIS_STATUS NdisOidRequest(
  [in] NDIS_HANDLE       NdisBindingHandle,
  [in] PNDIS_OID_REQUEST OidRequest
);

Parámetros

[in] NdisBindingHandle

Identificador devuelto por la función NdisOpenAdapterEx que identifica el adaptador de destino en el enlace.

[in] OidRequest

Puntero a una estructura de NDIS_OID_REQUEST que especifica la operación solicitada con un código OID_XXX determinado para consultar el estado de un adaptador o para establecer el estado de un adaptador.

Valor devuelto

El controlador subyacente determina qué NDIS_STATUS_XXX devuelve el código NdisOidRequest , pero normalmente es uno de los siguientes valores:

Código devuelto Descripción
NDIS_STATUS_SUCCESS
La operación de solicitud se completó correctamente.
NDIS_STATUS_PENDING
La solicitud se controla de forma asincrónica y NDIS llamará al autor de la llamada. Función ProtocolOidRequestComplete cuando se completa la solicitud.
NDIS_STATUS_INVALID_OID
El código OID_XXX especificado en el miembro Oid del búfer estructurado NDIS_OID_REQUEST en OidRequest no es válido o no es compatible con el controlador subyacente.
NDIS_STATUS_INVALID_LENGTH o NDIS_STATUS_BUFFER_TOO_SHORT
El valor especificado en el miembro InformationBufferLength del búfer estructurado NDIS_OID_REQUEST en OidRequest no coincide con los requisitos del código OID_XXX especificado. Si el búfer de información es demasiado pequeño, el miembro BytesNeeded contiene el valor correcto para InformationBufferLength en la devolución de NdisOidRequest.
NDIS_STATUS_INVALID_DATA
Los datos proporcionados en InformationBuffer en la estructura de NDIS_OID_REQUEST especificada no son válidos para el código OID_XXX especificado.
NDIS_STATUS_NOT_SUPPORTED o NDIS_STATUS_NOT_RECOGNIZED
El controlador subyacente no admite la operación solicitada.
NDIS_STATUS_RESOURCES
No se pudo satisfacer la solicitud debido a una escasez de recursos. Normalmente, este valor devuelto indica que un intento de asignar memoria no se realizó correctamente, pero no indica necesariamente que se producirá un error en la misma solicitud, enviada más adelante, por el mismo motivo.
NDIS_STATUS_NOT_ACCEPTED
El controlador subyacente intentó la operación solicitada, normalmente un conjunto en una NIC, pero se produjo un error. Por ejemplo, un intento de establecer demasiadas direcciones de multidifusión podría provocar la devolución de este valor.
NDIS_STATUS_CLOSING o NDIS_STATUS_CLOSING_INDICATING
El controlador subyacente produjo un error en la operación solicitada porque hay una operación de cierre en curso.
NDIS_STATUS_RESET_IN_PROGRESS
El controlador de minipuerto subyacente no puede satisfacer la solicitud en este momento porque actualmente está restableciendo la NIC afectada. Se llamó a la función ProtocolStatusEx del autor de la llamada con NDIS_STATUS_RESET_START para indicar que un restablecimiento está en curso. Este valor devuelto no indica necesariamente que se producirá un error en la misma solicitud, enviada más adelante, por el mismo motivo.
NDIS_STATUS_FAILURE
Este valor suele ser un valor predeterminado no específico, que se devuelve cuando ninguno de los NDIS_STATUS_XXX más específicos provocó que el controlador subyacente generara un error en la solicitud.

Comentarios

Un controlador de protocolo debe asignar memoria suficiente para contener el búfer de información asociado al OID especificado. El controlador también debe asignar y configurar el búfer en OidRequest antes de llamar a NdisOidRequest. Ambos búferes deben asignarse desde un grupo no paginado porque el controlador subyacente se ejecuta en IRQL elevado mientras procesa la solicitud.

NdisOidRequest reenvía una solicitud a los controladores subyacentes o controla la propia solicitud. Si el controlador siguiente inferior es un controlador intermedio NDIS, puede llamar a NdisOidRequest con una solicitud específica de OID propia antes de completar la solicitud enviada originalmente por el controlador de nivel superior.

Algunos errores devueltos son recuperables, incluidos los siguientes:

Es decir, un controlador puede modificar el paquete en OidRequest correctamente para corregir el código OID_XXX o el tamaño o el contenido del búfer en InformationBuffer y volver a enviar el paquete de solicitud a NdisOidRequest. Es posible que se cumpla el mismo paquete en la reenvío a NdisOidRequest si la llamada original indica un restablecimiento en curso o que una escasez de recursos, que podría ser temporal, impedía que se llevara a cabo esa solicitud.

La biblioteca NDIS mantiene enlaces para controladores de miniport subyacentes. NDIS puede devolver información para consultas específicas del enlace si un OID determinado está asociado a un tipo medio definido por el sistema para el que el sistema proporciona una biblioteca de filtros.

Para obtener más información sobre los OID generales y específicos de los medios y sus respectivos búferes de información asociados, consulte NDIS OID.

Requisitos

Requisito Value
Cliente mínimo compatible Se admite en NDIS 6.0 y versiones posteriores.
Plataforma de destino Escritorio
Encabezado ndis.h (incluya Ndis.h)
Library Ndis.lib
IRQL <= DISPATCH_LEVEL
Reglas de cumplimiento de DDI Irql_OID_Function(ndis)

Consulte también

NDIS_OID_REQUEST

NdisOpenAdapterEx

ProtocolOidRequestComplete

ProtocolStatusEx