Función NdisCoOidRequest (ndis.h)
La función NdisCoOidRequest reenvía una solicitud a los controladores CoNDIS de destino para consultar o establecer información especificada por OID del controlador de destino.
Sintaxis
NDIS_STATUS NdisCoOidRequest(
[in] NDIS_HANDLE NdisBindingHandle,
[in, optional] NDIS_HANDLE NdisAfHandle,
[in, optional] NDIS_HANDLE NdisVcHandle,
[in, optional] NDIS_HANDLE NdisPartyHandle,
[in, out] PNDIS_OID_REQUEST OidRequest
);
Parámetros
[in] NdisBindingHandle
Identificador que devolvió la función NdisOpenAdapterEx que identifica el adaptador de destino para el enlace.
[in, optional] NdisAfHandle
Identificador que identifica la familia de direcciones (AF) que se comparte entre el cliente, el administrador de llamadas y el NDIS. Este identificador se obtuvo de la siguiente manera:
- Si el autor de la llamada es un cliente que realiza una solicitud al administrador de llamadas, el cliente obtuvo originalmente este identificador de una llamada correcta a la Función NdisClOpenAddressFamilyEx .
- Si el autor de la llamada es un administrador de llamadas independiente o un administrador de llamadas de miniporte (MCM) que realiza una solicitud a un cliente, el administrador de llamadas o MCM obtuvo originalmente este identificador como parámetro de entrada para su función ProtocolCmOpenAf .
[in, optional] NdisVcHandle
Identificador que identifica la conexión virtual (VC) para la que el autor de la llamada solicita o establece información, si la solicitud es específica de VC. De lo contrario, si este parámetro es NULL, la solicitud no es específica de VC. Para cualquier solicitud específica de VC, el autor de la llamada obtuvo originalmente este identificador cuando creó la credencial verificable con la función NdisCoCreateVc o como parámetro de entrada para su función ProtocolCoCreateVc . Para una solicitud específica de VC dirigida al controlador de miniport subyacente, este identificador identifica la credencial verificable, mientras que NdisAfHandle y NdisPartyHandle son NULL.
[in, optional] NdisPartyHandle
Identificador que identifica a la entidad en un VC de varios puntos para el que el autor de la llamada solicita o establece información, si la solicitud es específica de la entidad. De lo contrario, si este parámetro es NULL, la solicitud no es específica de terceros. Para cualquier solicitud específica de la entidad, un cliente obtuvo originalmente este identificador de una llamada correcta a la función NdisClAddParty o a la función NdisClMakeCall o al administrador de llamadas obtuvo este identificador como parámetro de entrada para su función ProtocolCmAddParty . Si NdisAfHandle es NULL, NdisPartyHandle también es NULL.
[in, out] OidRequest
Puntero a una estructura de NDIS_OID_REQUEST que especifica la operación solicitada con un código OID_XXX determinado para consultar o establecer información.
Valor devuelto
El controlador de destino determina qué código NDIS_STATUS_XXXdevuelve NdisCoOidRequest , normalmente uno de los siguientes valores:
Código devuelto | Descripción |
---|---|
|
La operación de solicitud se completó correctamente. |
|
La solicitud se controla de forma asincrónica y NDIS llamará al autor de la llamada. Función ProtocolCoOidRequestComplete cuando se completa la solicitud. |
|
El código OID_XXX especificado en el miembro Oid de la estructura NDIS_OID_REQUEST en el parámetro OidRequest no es válido o no es compatible con el controlador subyacente. |
|
El valor especificado en el miembro InformationBufferLength del búfer estructurado de 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 de NDIS_OID_REQUEST contiene el valor correcto para InformationBufferLength, cuando devuelve NdisCoOidRequest . |
|
Los datos proporcionados en InformationBuffer en la estructura de NDIS_OID_REQUEST especificada no son válidos para el código OID_XXX especificado. |
|
El controlador subyacente no admite la operación solicitada. |
|
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 la misma solicitud, si se envía más adelante, producirá un error por el mismo motivo. |
|
El controlador subyacente intentó la operación solicitada, normalmente una solicitud establecida, pero se produjo un error en la operación. Por ejemplo, un intento de establecer demasiadas direcciones de multidifusión podría hacer que NdisCoOidRequest devuelva este valor. |
|
El controlador subyacente produjo un error en la operación solicitada porque hay una operación de cierre en curso. |
|
El controlador de miniport subyacente no puede satisfacer la solicitud en este momento porque actualmente está restableciendo la NIC afectada. La función ProtocolStatusEx 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 la misma solicitud, si se envía más adelante, producirá un error por el mismo motivo. |
|
Este valor suele ser un valor predeterminado no específico que se devuelve cuando ninguno de los NDIS_STATUS_XXX más específicos hizo que el controlador subyacente generara un error en la solicitud. |
|
El controlador de minipuerto detuvo el procesamiento de la solicitud. Por ejemplo, NDIS llama miniportador subyacente MiniportResetEx o Función MiniportCancelOidRequest . |
Comentarios
Los clientes de CoNDIS y los administradores de llamadas independientes pueden llamar a la función NdisCoOidRequest para enviar una solicitud OID para consultar o establecer información especificada por OID en un controlador de destino. El controlador de destino puede ser otro controlador de protocolo CoNDIS o un controlador subyacente.
El autor de la llamada de NdisCoOidRequest debe asignar memoria suficiente para contener el búfer de información asociado al OID especificado. El autor de la llamada también debe asignar y configurar el búfer en OidRequest antes de llamar a NdisCoOidRequest. Ambos búferes se deben asignar desde un grupo no paginado porque el controlador de destino se puede ejecutar en IRQL generado mientras procesa la solicitud.
Algunos errores que devuelve NdisCoOidRequest 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
Según el valor del parámetro NdisAfHandle , los clientes y los administradores de llamadas independientes llaman a NdisCoOidRequest para comunicarse entre sí o con el controlador de miniport subyacente orientado a la conexión.
Si un controlador pasa NULL para NdisVcHandle, la solicitud es global por naturaleza, si la solicitud se dirige al cliente, al administrador de llamadas o al controlador de miniporte. Por ejemplo, si el autor de la llamada proporciona un valor distinto de NULL para NdisVcHandle, una solicitud de OID de OID_GEN_CO_RCV_CRC_ERROR a un controlador de miniporte orientado a la conexión subyacente devuelve el número de errores de comprobación de redundancia cíclica (CRC) que se encontraron para un VC determinado. Para la misma solicitud con NULL para NdisVcHandle, el controlador de minipuerto subyacente devuelve el número total de errores CRC que se encontraron para todas las máquinas virtuales.
Los clientes y los administradores de llamadas independientes deben llamar a la función NdisOidRequest para todos los OID que no están orientados a la conexión, como los que se devuelven en una consulta de OID_GEN_SUPPORTED_LIST , que se emite normalmente durante la inicialización después de que el controlador de protocolo se haya enlazado al controlador NIC subyacente.
Si NdisCoOidRequest devuelve NDIS_STATUS_PENDING, la solicitud se controla de forma asincrónica y NDIS llamará al controlador. Función ProtocolCoOidRequestComplete cuando se completa la solicitud. Si NdisCoOidRequest devuelve cualquier otro estado, la solicitud se completa cuando devuelve NdisCoOidRequest y NDIS no llama a ProtocolCoOidRequestComplete.
Para obtener más información sobre los conjuntos de OID que se definen para su uso con NdisCoOidRequest y NdisOidRequest, consulte NDIS OIDs.
Solo los clientes y los administradores de llamadas independientes, que son controladores de protocolo, pueden llamar a NdisCoOidRequest. Los MCM llaman a la función NdisMCmOidRequest para comunicarse con sus clientes.
Requisitos
Requisito | Value |
---|---|
Cliente mínimo compatible | Compatible con 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_Connection_Function(ndis) |