PROTOCOL_CL_INCOMING_CLOSE_CALL función de devolución de llamada (ndis.h)
Todos los clientes NDIS orientados a la conexión usan la función ProtocolClIncomingCloseCall . Todos estos clientes deben tener funciones ProtocolClIncomingCloseCall totalmente funcionales.
Sintaxis
PROTOCOL_CL_INCOMING_CLOSE_CALL ProtocolClIncomingCloseCall;
void ProtocolClIncomingCloseCall(
[in] NDIS_STATUS CloseStatus,
[in] NDIS_HANDLE ProtocolVcContext,
[in] PVOID CloseData,
[in] UINT Size
)
{...}
Parámetros
[in] CloseStatus
Especifica el estado que indica la causa de la desmontaje de la conexión, que normalmente se NDIS_STATUS_SUCCESS para indicar que la parte remota a la llamada solicitó que se cerrara la conexión. Cualquier otro valor indica que los problemas en la red provocaron que el administrador de llamadas finalizara la conexión.
[in] ProtocolVcContext
Especifica el identificador del área de contexto por VC del cliente para la credencial verificable en la que se cierra la conexión. Sea cual sea el valor de CloseStatus, el cliente no puede enviar ni recibir datos en el VC designado por NdisVcHandle que almacenó en este área de contexto.
[in] CloseData
Puntero a un búfer que contiene un mensaje de cierre específico del protocolo, posiblemente uno proporcionado por el cliente remoto que el administrador de llamadas recibió a través de la red, o este parámetro puede ser NULL.
Cuando CloseStatus se NDIS_STATUS_SUCCESS, este parámetro es NULL si el medio de red subyacente no admite transferencias de datos al cerrar una conexión. Sin embargo, cualquier administrador de llamadas determinado podría definir una estructura para pasar información de diagnóstico adicional a sus clientes en las desmontaciones de llamadas causadas por problemas en la red.
[in] Size
Especifica el tamaño en bytes del búfer en CloseData, cero si CloseData es NULL.
Valor devuelto
None
Observaciones
Una llamada a ProtocolClIncomingCloseCall indica que se ha producido una de las siguientes acciones:
- El administrador de llamadas ha recibido una solicitud a través de la red para cerrar una conexión establecida, identificada por NdisVcHandle que el cliente almacenó en su área de contexto por VC en ProtocolVcContext .
- El administrador de llamadas ha detectado que los problemas de red impedirán más transferencias de datos en la conexión establecida.
Si el VC especificado es una conexión de punto único o de varios puntos, ProtocolClIncomingCloseCall debe llamar a NdisClCloseCall para confirmar que el cliente no intentará enviar ni esperar recibir datos en esta credencial verificable concreta. Si el administrador de llamadas creó este VC, ProtocolClIncomingCloseCall debe devolver el control después de llamar a NdisClCloseCall. Es responsabilidad del administrador de llamadas destruir o reutilizar cualquier vc que haya creado.
Si el cliente creó originalmente este VC para una llamada saliente, ProtocolClIncomingCloseCall puede realizar una de las siguientes después de llamar a NdisClDropParty tantas veces como sea necesario, si existe, y NdisClCloseCall:
- Si CloseStatus está NDIS_STATUS_SUCCESS, desmonte la credencial verificable con NdisCoDeleteVc y libere el área de contexto por vc del cliente o prepárela para reutilizarla en una llamada posterior a NdisCoCreateVc.
- Si CloseStatus está NDIS_STATUS_SUCCESS, conserve la credencial verificable que creó el cliente y prepare su área de contexto por VC para reutilizarla en una llamada posterior a NdisClMakeCall.
- De lo contrario, desmonta la credencial verificable con NdisCoDeleteVc y libera su área de contexto por VC si el administrador de llamadas indicó que la red se ha vuelto inoperante.
Ejemplos
Para definir una función ProtocolClIncomingCloseCall , 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 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 ProtocolClIncomingCloseCall denominada "MyClIncomingCloseCall", use el tipo PROTOCOL_CL_INCOMING_CLOSE_CALL como se muestra en este ejemplo de código:
PROTOCOL_CL_INCOMING_CLOSE_CALL MyClIncomingCloseCall;
A continuación, implemente la función de la siguiente manera:
_Use_decl_annotations_
VOID
MyClIncomingCloseCall(
NDIS_STATUS CloseStatus,
NDIS_HANDLE ProtocolVcContext,
PVOID CloseData,
UINT Size
)
{...}
El tipo de función PROTOCOL_CL_INCOMING_CLOSE_CALL 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_CL_INCOMING_CLOSE_CALL en el archivo de encabezado. Para obtener más información sobre los requisitos de las declaraciones de función, vea Declarar funciones mediante 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 | Compatible con controladores NDIS 6.0 y NDIS 5.1 (consulte ProtocolClIncomingCloseCall (NDIS 5.1)) en Windows Vista. Compatible con los controladores NDIS 5.1 (consulte ProtocolClIncomingCloseCall (NDIS 5.1)) en Windows XP. |
Plataforma de destino | Windows |
Encabezado | ndis.h (incluya Ndis.h) |
IRQL | <= DISPATCH_LEVEL |