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.
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.
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) |