Función NdisRequest (ndis.h)

Nota NDIS 5. x ha quedado en desuso y se sustituye por NDIS 6. x. Para el nuevo desarrollo de controladores NDIS, consulte Controladores de red a partir de Windows Vista. Para obtener información sobre cómo migrar NDIS 5. x controladores a NDIS 6. x, consulte Migración de controladores NDIS 5.x a NDIS 6.0.

NdisRequest reenvía una solicitud al controlador subyacente que consulta las funcionalidades o el estado de su NIC o que establece el estado de su NIC.

Sintaxis

void NdisRequest(
  [out] PNDIS_STATUS  Status,
  [in]  NDIS_HANDLE   NdisBindingHandle,
  [in]  PNDIS_REQUEST NdisRequest
);

Parámetros

[out] Status

Puntero a una variable proporcionada por el autor de la llamada que se establece en la devolución de esta función. El controlador subyacente determina qué NDIS_STATUS_XXX se devuelve, pero normalmente es uno de los siguientes valores:

  • NDIS_STATUS_SUCCESS
    La operación solicitada se ha completado correctamente.

  • NDIS_STATUS_PENDING
    La solicitud se controla de forma asincrónica y se llamará a la función ProtocolRequestComplete del autor de la llamada cuando se complete.

  • NDIS_STATUS_INVALID_OID
    El código OID_XXX especificado en el miembro Oid del búfer estructurado NDIS_REQUEST en NdisRequest 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_REQUEST en NdisRequest 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 NdisRequest.

  • NDIS_STATUS_INVALID_DATA
    Los datos proporcionados en InformationBuffer en la estructura de NDIS_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, esta devolución 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 su NIC, pero el netcard 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 un cierre en curso.

  • NDIS_STATUS_RESET_IN_PROGRESS
    El controlador NIC subyacente no puede satisfacer la solicitud en este momento porque actualmente está restableciendo el netcard. La función ProtocolStatus del autor de la llamada era o se llamará 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, devuelto cuando ninguno de los NDIS_STATUS_XXX más específicos hizo que el controlador subyacente generara un error en la solicitud.

[in] NdisBindingHandle

Especifica el identificador devuelto por NdisOpenAdapter que identifica la NIC de destino o el adaptador virtual del controlador inferior siguiente al que está enlazado el autor de la llamada.

[in] NdisRequest

Puntero a una estructura almacenada en búfer que especifica la operación solicitada con un código xxx de OID_ determinado para una consulta o un conjunto.

Valor devuelto

None

Observaciones

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

En el caso de los autores de llamadas superados por encima de un controlador NDIS intermedio, NdisRequest reenvía una solicitud al controlador inferior siguiente que devuelve información sobre sus propias funcionalidades o dirige a ese controlador para controlar la funcionalidad específica de una manera determinada por el autor de la llamada. Si el controlador inferior siguiente es un controlador intermedio NDIS, puede llamar a NdisRequest con una solicitud específica del OID propia antes de completar la solicitud enviada originalmente por el protocolo de nivel superior.

Algunos errores devueltos en Status son recuperables, incluidos los siguientes:

NDIS_STATUS_INVALID_OID

NDIS_STATUS_INVALID_LENGTH

NDIS_STATUS_BUFFER_TOO_SHORT

NDIS_STATUS_INVALID_DATA

NDIS_STATUS_RESOURCES

NDIS_STATUS_RESET_IN_PROGRESS

Es decir, un controlador puede modificar el paquete en NdisRequest adecuadamente 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 NdisRequest. El mismo paquete puede cumplirse con la reenvío a NdisRequest si la llamada original indicó 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, vea Identificadores de objeto NDIS.

  • Plataforma de destino: Universal
  • Versión: no se admite para controladores NDIS 6.0 en Windows Vista. En su lugar, use NdisOidRequest. Compatible con controladores NDIS 5.1 en Windows Vista y Windows XP.

Requisitos

Requisito Valor
Header ndis.h (incluya Ndis.h)
Library Ndis.lib
IRQL IRQL <= DISPATCH_LEVEL

Consulte también