Compartir a través de


Función NdisClCloseCall (ndis.h)

NdisClCloseCall solicita que se desactive una llamada en el VC especificado.

Sintaxis

NDIS_STATUS NdisClCloseCall(
  [in]           NDIS_HANDLE NdisVcHandle,
  [in, optional] NDIS_HANDLE NdisPartyHandle,
  [in, optional] PVOID       Buffer,
  [in]           UINT        Size
);

Parámetros

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

Valor devuelto

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.

Comentarios

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.

Antes de llamar a NdisClCloseCall, un protocolo debe asegurarse de que todos sus paquetes de envío pendientes se hayan devuelto a su Función ProtocolCoSendNetBufferListsComplete . (Los paquetes enviados a través de NdisCoSendNetBufferLists siempre se devuelven de forma asincrónica a ProtocolCoSendNetBufferListsComplete). Después de llamar a NdisClCloseCall, un protocolo no debe llamar a NdisCoSendNetBufferLists para enviar paquetes en el VC al que hace referencia NdisClCloseCall.

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 .

Requisitos

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)

Consulte también

NdisClDropParty

NdisClMakeCall

NdisClModifyCallQoS

NdisCoDeleteVc

NdisCoSendNetBufferLists

ProtocolClCloseCallComplete

ProtocolClIncomingCallQoSChange

ProtocolClIncomingCloseCall

ProtocolClIncomingDropParty

ProtocolClMakeCallComplete

ProtocolClModifyCallQoSComplete

ProtocolCmCloseCall

ProtocolCoSendNetBufferListsComplete