Compartir a través de


Función NdisDirectOidRequest (ndis.h)

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

Sintaxis

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

Parámetros

[in] NdisBindingHandle

Identificador que devuelve la función NdisOpenAdapterEx que identifica el adaptador de miniporte de destino en el enlace.

[in] OidRequest

Puntero a una estructura 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 NdisDirectOidRequest , 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 ProtocolDirectOidRequestComplete 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 era válido o no era 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 coincidía con los requisitos del código OID_Xxx especificado. Si el búfer de información era demasiado pequeño, el miembro BytesNeeded contiene el valor correcto para InformationBufferLength en la devolución de NdisDirectOidRequest.
NDIS_STATUS_INVALID_DATA
Los datos proporcionados en InformationBuffer en la estructura de NDIS_OID_REQUEST especificada no eran 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. Para NdisDirectOidRequest, NDIS también puede devolver este estado si el controlador de llamada no ha registrado un Función ProtocolDirectOidRequestComplete .
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 valores de NDIS_STATUS_Xxx más específicos hizo que el controlador subyacente generara un error en la solicitud.

Comentarios

La función NdisDirectOidRequest no se puede usar para solicitudes OID generales. En el caso de las solicitudes OID generales, use la función NdisOidRequest en su lugar. NdisDirectOidRequest solo se puede usar para los NDIS compatibles con NDIS para su uso con la interfaz OID directa. Por ejemplo, se pueden usar los siguientes OID:

OID_TCP_TASK_IPSEC_OFFLOAD_V2_ADD_SA OID_TCP_TASK_IPSEC_OFFLOAD_V2_DELETE_SA OID_TCP_TASK_IPSEC_OFFLOAD_V2_UPDATE_SA

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 el parámetro OidRequest antes de llamar a NdisDirectOidRequest. Ambos búferes deben asignarse desde un grupo no paginado porque el controlador subyacente se ejecuta en IRQL elevado mientras procesa la solicitud.

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

Un controlador que llama a NdisDirectOidRequest debe registrar el Función ProtocolDirectOidRequestComplete .

La interfaz de solicitud OID directa es similar a la interfaz de solicitud OID general. Para obtener más información sobre cómo emitir solicitudes generales, vea NdisOidRequest.

Nota Aunque las solicitudes OID directas no suelen serializarse, el propio NDIS todavía puede poner en lápiz una solicitud con NDIS_STATUS_PENDING y poner en cola la solicitud para su finalización posterior. Por ejemplo, NDIS puede poner en cola una solicitud OID directa enviada a un miniporte de suspensión selectiva que se encuentra actualmente en un estado de bajo consumo. Los protocolos y filtros deben estar preparados para controlar un código de NDIS_STATUS_PENDING, incluso si el miniporte subyacente completara la solicitud de forma sincrónica.
 

Requisitos

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

Consulte también

NDIS_OID_REQUEST

NdisOidRequest

NdisOpenAdapterEx

OID_TCP_TASK_IPSEC_OFFLOAD_V2_ADD_SA OID_TCP_TASK_IPSEC_OFFLOAD_V2_DELETE_SA OID_TCP_TASK_IPSEC_OFFLOAD_V2_UPDATE_SA ProtocolDirectOidRequestComplete

ProtocolStatusEx