PROTOCOL_CLOSE_ADAPTER_COMPLETE_EX función de devolución de llamada (ndis.h)
NDIS llama a la función ProtocolCloseAdapterCompleteEx de un controlador de protocolo para completar una operación de adaptador de cierre para la que la función NdisCloseAdapterEx devolvió NDIS_STATUS_PENDING.
Sintaxis
PROTOCOL_CLOSE_ADAPTER_COMPLETE_EX ProtocolCloseAdapterCompleteEx;
void ProtocolCloseAdapterCompleteEx(
[in] NDIS_HANDLE ProtocolBindingContext
)
{...}
Parámetros
[in] ProtocolBindingContext
Identificador de un área de contexto asignada por el controlador de protocolo. El controlador de protocolo mantiene la información de contexto por enlace en esta área de contexto. El controlador proporcionó este identificador a NDIS cuando el controlador llamó a la función NdisOpenAdapterEx .
Valor devuelto
None
Observaciones
ProtocolCloseAdapterCompleteEx es una función necesaria.
Si ProtocolUnbindAdapterEx está esperando que NDIS llame a ProtocolCloseAdapterCompleteEx, esta función puede indicar simplemente que se ha llamado y devuelto (por ejemplo, actualiza el área de contexto ProtocolBindingContext ). Esto permite que la función ProtocolCloseAdapterCompleteEx complete la operación de desenlace.
Después de que el controlador de protocolo llame a la función NdisCloseAdapterEx , el identificador NdisBindingHandle que la función NdisOpenAdapterEx devuelta ya no es válida. Por lo tanto, ProtocolCloseAdapterCompleteEx no puede llamar a ninguna función de NdisXxx que requiera este identificador como parámetro.
Si el parámetroLa función ProtocolUnbindAdapterEx aún no lo ha hecho, ProtocolCloseAdapterCompleteEx puede liberar los recursos asignados al controlador de protocolo para las operaciones de E/S de red por enlace.
Si ProtocolUnbindAdapterEx devolvió NDIS_STATUS_PENDING y guardó el identificador UnbindContext en el área de contexto de ProtocolBindingContext, ProtocolCloseAdapterCompleteEx puede llamar a . Función NdisCompleteUnbindAdapterEx para completar la operación de desenlace. Por lo tanto, ProtocolCloseAdapterCompleteEx no debe liberar el área de contexto hasta después de llamar a NdisCompleteUnbindAdapterEx.
NDIS llama a ProtocolCloseAdapterCompleteEx en IRQL = PASSIVE_LEVEL.
Ejemplos
Para definir una función ProtocolCloseAdapterCompleteEx , primero debe proporcionar una declaración de función que identifique el tipo de función que está definiendo. Windows proporciona un conjunto de tipos de función para controladores. Declarar una función mediante los tipos de función ayuda a Code Analysis for Drivers, Static Driver Verifier (SDV) y otras herramientas de comprobación a encontrar errores y es un requisito para escribir controladores para el sistema operativo Windows.Por ejemplo, para definir una función ProtocolCloseAdapterCompleteEx denominada "MyCloseAdapterCompleteEx", use el tipo de PROTOCOL_CLOSE_ADAPTER_COMPLETE_EX como se muestra en este ejemplo de código:
PROTOCOL_CLOSE_ADAPTER_COMPLETE_EX MyCloseAdapterCompleteEx;
A continuación, implemente la función de la siguiente manera:
_Use_decl_annotations_
VOID
MyCloseAdapterCompleteEx(
NDIS_HANDLE ProtocolBindingContext
)
{...}
El tipo de función PROTOCOL_CLOSE_ADAPTER_COMPLETE_EX 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_CLOSE_ADAPTER_COMPLETE_EX en el archivo de encabezado. Para obtener más información sobre los requisitos de las declaraciones de función, consulte 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, consulte Anotación del comportamiento de la función.
Requisitos
Requisito | Value |
---|---|
Cliente mínimo compatible | Se admite en NDIS 6.0 y versiones posteriores. |
Plataforma de destino | Windows |
Encabezado | ndis.h (incluya Ndis.h) |
IRQL | PASSIVE_LEVEL |