Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Todos los clientes NDIS orientados a la conexión usan la función ProtocolClIncomingCloseCall. Todos estos clientes deben tener funciones totalmente funcionales ProtocolClIncomingCloseCall.
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 suele ser NDIS_STATUS_SUCCESS indicar que la entidad remota a la llamada solicitó que se cierre 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 el VC en el 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 el 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 es NDIS_STATUS_SUCCESS, este parámetro se NULL si el medio de red subyacente no admite transferencias de datos al cerrar una conexión. Sin embargo, cualquier administrador de llamadas concreto 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
Ninguno
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 el NdisVcHandle que el cliente almacena 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.
Tanto si el VC especificado es una conexión de punto único como de varios puntos, ProtocolClIncomingCloseCall debe llamar a NdisClCloseCall para confirmar que el cliente no intentará enviar ni esperar recibir datos en este VC determinado. 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 acciones después de llamar a NdisClDropParty tantas veces como sea necesario, si existe, y NdisClCloseCall:
- Si CloseStatus es NDIS_STATUS_SUCCESS, descomponga el VC con NdisCoDeleteVc y libere el área de contexto por VC del cliente o prepárela para su reutilización en una llamada posterior a NdisCoCreateVc.
- Si CloseStatus es NDIS_STATUS_SUCCESS, conserve la credencial verificable que creó el cliente y prepare su área de contexto por VC para su reutilización en una llamada posterior a NdisClMakeCall.
- De lo contrario, descomponga el VC con NdisCoDeleteVc y libere su área de contexto por VC si el administrador de llamadas indica que la red se ha vuelto inoperativa.
Ejemplos de
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 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 una función ProtocolClIncomingCloseCall denominada "MyClIncomingCloseCall", use el tipo PROTOCOL_CL_INCOMING_CLOSE_CALL tal 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 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 | Compatible con los 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. |
de la plataforma de destino de | Windows |
encabezado de | ndis.h (incluya Ndis.h) |
irQL | <= DISPATCH_LEVEL |