Compartir a través de


PROTOCOL_CO_OID_REQUEST_COMPLETE función de devolución de llamada (ndis.h)

La función ProtocolCoOidRequestComplete completa el procesamiento de una solicitud OID coNDIS asincrónica.

Nota Debe declarar la función mediante el tipo de PROTOCOL_CO_OID_REQUEST_COMPLETE. Para obtener más información, consulte la sección Ejemplos siguientes.
 

Sintaxis

PROTOCOL_CO_OID_REQUEST_COMPLETE ProtocolCoOidRequestComplete;

void ProtocolCoOidRequestComplete(
  [in]      NDIS_HANDLE ProtocolAfContext,
  [in]      NDIS_HANDLE ProtocolVcContext,
  [in]      NDIS_HANDLE ProtocolPartyContext,
  [in, out] PNDIS_OID_REQUEST OidRequest,
  [in]      NDIS_STATUS Status
)
{...}

Parámetros

[in] ProtocolAfContext

Identificador que identifica un área de contexto de familia de direcciones (AF). Si el controlador es un cliente, proporcionó este identificador cuando llamó a . función NdisClOpenAddressFamilyEx para conectarse al administrador de llamadas. Si el controlador es un administrador de llamadas o administrador de llamadas de miniporte (MCM), proporcionó este identificador desde su función ProtocolCmOpenAf.

[in] ProtocolVcContext

Identificador que identifica la conexión virtual activa (VC) para la que el controlador solicitó o estableció información, si la solicitud era específica de VC. De lo contrario, este parámetro es NULL.

[in] ProtocolPartyContext

Identificador que identifica a la entidad en un VC de varios puntos para el que el controlador solicitó o estableció información, si la solicitud es específica de la entidad. De lo contrario, este parámetro es NULL.

[in, out] OidRequest

Puntero a la estructura de NDIS_OID_REQUEST proporcionada por el controlador que se pasó anteriormente a la función NdisCoOidRequest o NdisMCmOidRequest.

[in] Status

Estado final de la solicitud. El controlador de destino o NDIS determina este estado final. Este parámetro determina lo que protocolCoOidRequestComplete hace con la información de OidRequest.

Valor devuelto

Ninguno

Observaciones

NDIS llama a la función ProtocolCoOidRequestComplete para completar el procesamiento del cliente De CoNDIS, el administrador de llamadas o la solicitud OID de MCM para la que función NdisCoOidRequest o función NdisMCmOidRequest devolvió NDIS_STATUS_PENDING.

Para registrar ProtocolCoOidRequestComplete como cliente, un controlador inicializa un NDIS_CO_CLIENT_OPTIONAL_HANDLERS estructura y la pasa en el parámetro optionalHandlers de la función NdisSetOptionalHandlers. Para registrar ProtocolCoOidRequestComplete como administrador de llamadas, un controlador inicializa un NDIS_CO_CALL_MANAGER_OPTIONAL_HANDLERS estructura y la pasa en el parámetro optionalHandlers de NdisSetOptionalHandlers.

El controlador de destino es el controlador que atuvo la solicitud de información de OID. Llamada del controlador de destino al NdisMCoOidRequestComplete, NdisCoOidRequestComplete, o función NdisMCmOidRequestComplete causó que NDIS llamara a la función ProtocolCoOidRequestComplete. NDIS reenvía el valor del parámetro status que se pasó a estas funciones como parámetro de entrada Status a ProtocolCoOidRequestComplete.

ProtocolCoOidRequestComplete usa el valor de entrada de Status como se indica a continuación:

  • Si estado es NDIS_STATUS_SUCCESS, el miembro BytesRead o BytesWritten de la estructura NDIS_OID_REQUEST que apunta el parámetro OidRequest para especificar la cantidad de información transferida desde el búfer del InformationBuffer miembro de NDIS_OID_REQUEST al controlador de destino o la cantidad de información que se devolvió en InformationBuffer, respectivamente.

    Si el controlador realizó una solicitud de consulta, ProtocolCoOidRequestComplete puede usar los datos que se devuelven en InformationBuffer según corresponda para el valor especificado en el miembro Oid de NDIS_OID_REQUEST.

  • Si estado es NDIS_STATUS_INVALID_LENGTH o NDIS_STATUS_BUFFER_TOO_SHORT, el miembro BytesNeeded de la estructura NDIS_OID_REQUEST que OidRequest apunta a que especifica el valor específico del OID del InformationBufferLength miembro de NDIS_OID_REQUEST que es necesario para llevar a cabo la operación solicitada.

    En estas circunstancias, protocolCoOidRequestComplete puede asignar suficiente espacio de búfer para la solicitud, configurar otra estructura de NDIS_OID_REQUEST con el valor necesario para InformationBufferLengthy reintentar la solicitud OID.

  • Si estado es un valor NDIS_STATUS_ XXX que es un error irrecuperable, ProtocolCoOidRequestComplete debe liberar la memoria de la estructura NDIS_OID_REQUEST. ProtocolCoOidRequestComplete también debe determinar si el controlador debe cerrar el enlace o ajustar su información de estado específica del enlace para controlar las operaciones continuas de E/S de red en el enlace.
Para obtener más información sobre los OID definidos por el sistema, consulte NDIS OIDs.

protocolCoOidRequestComplete se puede llamar antes de que el controlador tenga tiempo de inspeccionar el código de estado que NdisCoOidRequest o NdisMCmOidRequest.

NDIS llama a ProtocolCoOidRequestComplete en IRQL <= DISPATCH_LEVEL.

Ejemplos de

Para definir una función ProtocolCoOidRequestComplete, primero debe proporcionar una declaración de función que identifique el tipo de función que va a definir. Windows proporciona un conjunto de tipos de función para controladores. Declarar una función mediante los tipos de función ayuda a análisis de código para controladores, comprobador de controladores estáticos (SDV) y otras herramientas de comprobación encuentran errores y es un requisito para escribir controladores para el sistema operativo Windows.

Por ejemplo, para definir un ProtocolCoOidRequestComplete función denominada "MyCoOidRequestComplete", use el tipo PROTOCOL_CO_OID_REQUEST_COMPLETE tal como se muestra en este ejemplo de código:

PROTOCOL_CO_OID_REQUEST_COMPLETE MyCoOidRequestComplete;

A continuación, implemente la función de la siguiente manera:

_Use_decl_annotations_
VOID
 MyCoOidRequestComplete(
    NDIS_HANDLE  ProtocolAfContext,
    NDIS_HANDLE  ProtocolVcContext,
    NDIS_HANDLE  ProtocolPartyContext,
    PNDIS_OID_REQUEST  OidRequest,
    NDIS_STATUS  Status
    )
  {...}

El tipo de función PROTOCOL_CO_OID_REQUEST_COMPLETE se define en el archivo de encabezado Ndis.h. Para identificar con más precisión los errores al ejecutar las herramientas de análisis de código, asegúrese de agregar la anotación Use_decl_annotations a la definición de función. La anotación Use_decl_annotations garantiza que se usen las anotaciones que se aplican al tipo de función PROTOCOL_CO_OID_REQUEST_COMPLETE en el archivo de encabezado. Para obtener más información sobre los requisitos de las declaraciones de función, vea Declaración de funciones mediante el uso de tipos de roles de función para controladores NDIS.

Para obtener información sobre Use_decl_annotations, vea Anotación del comportamiento de la función.

Requisitos

Requisito Valor
cliente mínimo admitido Se admite en NDIS 6.0 y versiones posteriores.
de la plataforma de destino de Windows
encabezado de ndis.h (incluya Ndis.h)
irQL <= DISPATCH_LEVEL (consulte la sección Comentarios)

Consulte también

NDIS_CO_CALL_MANAGER_OPTIONAL_HANDLERS NDIS_CO_CLIENT_OPTIONAL_HANDLERS

NDIS_OID_REQUEST

NdisClOpenAddressFamilyEx

NdisCoOidRequest

NdisCoOidRequestComplete

NdisMCmOidRequest

NdisMCmOidRequestComplete

NdisMCoOidRequestComplete

NdisSetOptionalHandlers

ProtocolCmOpenAf de