Función NdisClCloseCall (ndis.h)
NdisClCloseCall solicita que se desactive una llamada en el VC especificado.
NDIS_STATUS NdisClCloseCall(
[in] NDIS_HANDLE NdisVcHandle,
[in, optional] NDIS_HANDLE NdisPartyHandle,
[in, optional] PVOID Buffer,
[in] UINT Size
);
[in] NdisVcHandle
Controle el VC de la llamada que se cierra o se desconecta. Este identificador lo proporcionó NDIS cuando el VC se creó originalmente con NdisCoCreateVc, ya sea por el cliente en preparación para realizar una llamada saliente o por el administrador de llamadas en preparación para enviar una llamada entrante al cliente.
[in, optional] NdisPartyHandle
Controle a la última parte que se va a quitar en un VC o NULL de varios puntos. Si se trata de un VC de varios puntos, el cliente obtuvo este identificador de una llamada anterior a NdisClMakeCall o NdisClAddParty.
[in, optional] Buffer
Puntero a un búfer asignado por el autor de la llamada que contiene los datos que se van a transmitir a la entidad en el nodo remoto cuando se cierra la conexión. Dependiendo del medio subyacente, este puntero puede ser NULL.
[in] Size
Especifica el tamaño, en bytes, en búfer, cero si el búfer es NULL.
Cuando NdisClCloseCall devuelve algo distinto de NDIS_STATUS_PENDING, el cliente debe realizar una llamada interna a su Función ProtocolClCloseCallComplete . De lo contrario, NDIS llama a la función ProtocolClCloseCallComplete del cliente cuando se completa esta operación.
Los clientes suelen llamar a NdisClCloseCall en cualquiera de las siguientes circunstancias:
- Para cerrar una llamada establecida, si el cliente inició la llamada con NdisClMakeCall o se ofreció por un elemento del mismo nivel remoto y lo aceptó el cliente. Función ProtocolClIncomingCall .
-
Desde la lista Función ProtocolClIncomingCloseCall para anular una llamada establecida.
Esto ocurre cuando el usuario remoto cierra una llamada entrante que inició originalmente la entidad remota y que el cliente aceptó. En el caso de las llamadas salientes iniciadas por el cliente, esto ocurre cuando el usuario remoto cierra la conexión de punto a punto en el nodo remoto o cuando la última parte restante de un VC de varios puntos cierra la llamada en el nodo remoto.
-
Desde la lista Función ProtocolClMakeCallComplete para anular un intento iniciado por el cliente de realizar una llamada saliente.
Esto ocurre si el administrador de llamadas ha modificado los parámetros de llamada especificados por el cliente pasados a NdisClMakeCall y el cliente encuentra estas modificaciones inaceptables.
-
Desde la función ProtocolClIncomingQoSChange para anular una llamada establecida.
Esto ocurre si un cambio de QoS propuesto por la otra parte en la credencial verificable es inaceptable para el cliente.
-
Desde la lista Función ProtocolClModifyCallQoSComplete para anular una llamada establecida.
Esto ocurre si no se acepta un cambio de QoS propuesto por el cliente en la credencial verificable y el QoS modificado por CM se devuelve a ProtocolClModifyCallQoSComplete es inaceptable para el cliente.
La llamada de un cliente a NdisClCloseCall hace que NDIS marque NdisVcHandle como cierre y llame a la función ProtocolCmCloseCall de CM.
Para anular una llamada establecida en un VC de varios puntos creado por el cliente, el cliente debe llamar a NdisClDropParty una o varias veces para liberar todo, pero la última parte en el VC antes de llamar a NdisClCloseCall. El administrador de llamadas producirá un error en la solicitud de cualquier cliente para cerrar una llamada de varios puntos si la credencial verificable especificada todavía tiene más de una entidad conectada. NdisPartyHandle pasado a NdisClCloseCall puede ser cualquier identificador válido que el cliente obtuvo de sus llamadas anteriores a NdisClAddParty o NdisClMakeCall con el NdisVcHandle especificado.
Como partes remotas de una solicitud de llamada multipunto iniciada por el cliente que se cierran sus conexiones, NDIS llama a la función ProtocolClDropParty del cliente siempre que exista más de una entidad pendiente en la credencial verificable multipoint creada por el cliente. Cuando el último usuario remoto restante cierra su conexión, NDIS llama al cliente. Función ProtocolClIncomingCloseCall en su lugar. Por lo tanto, la función ProtocolClIncomingCloseCall de cualquier cliente que configure conexiones de varios puntos debe identificar la última parte restante en sus máquinas virtuales de varios puntos y pasar el NdisPartyHandle adecuado a NdisClCloseCall.
Después de que el cliente publique un NdisPartyHandle con NdisClCloseCall, puede liberar (o reinicializar para reutilizar) los recursos para el estado por parte que estaba manteniendo. Sin embargo, el cliente no puede liberar ni reutilizar sus recursos por VC de forma similar al finalizar la operación que inició con NdisClCloseCall porque NdisVcHandle, que no se puede reutilizar para realizar otra llamada porque está marcada como cierre, sigue siendo válida hasta que se destruye la credencial verificable. El cliente debe llamar a NdisCoDeleteVc si creó el VC para una llamada saliente antes de liberar o reinicializar sus recursos por VC, o el cliente debe aplazar la versión o reinicialización de estos recursos hasta que se llame a su función ProtocolCoDeleteVc .
Requisito | Value |
---|---|
Cliente mínimo compatible | Compatible con los controladores NDIS 6.0 y NDIS 5.1 (consulte NdisClCloseCall (NDIS 5.1)) en Windows Vista. Compatible con los controladores NDIS 5.1 (consulte NdisClCloseCall (NDIS 5.1)) en Windows XP. |
Plataforma de destino | Escritorio |
Encabezado | ndis.h (incluya Ndis.h) |
Library | Ndis.lib |
IRQL | <= DISPATCH_LEVEL |
Reglas de cumplimiento de DDI | Irql_Protocol_Driver_Function(ndis) |