Função NdisClCloseCall (ndis.h)
NdisClCloseCall solicita que uma chamada na VC especificada seja interrompida.
Sintaxe
NDIS_STATUS NdisClCloseCall(
[in] NDIS_HANDLE NdisVcHandle,
[in, optional] NDIS_HANDLE NdisPartyHandle,
[in, optional] PVOID Buffer,
[in] UINT Size
);
Parâmetros
[in] NdisVcHandle
Manipule para a VC da chamada que está sendo fechada ou desconectada. Esse identificador foi fornecido pelo NDIS quando a VC foi originalmente criada com NdisCoCreateVc, seja pelo cliente em preparação para fazer uma chamada de saída ou pelo gerenciador de chamadas em preparação para expedir uma chamada de entrada para o cliente.
[in, optional] NdisPartyHandle
Manipule para a última parte a ser descartada em um VC de vários pontos ou NULL. Se essa for uma VC de vários pontos, o cliente obteve esse identificador de uma chamada anterior para NdisClMakeCall ou NdisClAddParty.
[in, optional] Buffer
Ponteiro para um buffer alocado pelo chamador que contém todos os dados a serem transmitidos para a parte no nó remoto quando a conexão é fechada. Dependendo do meio subjacente, esse ponteiro pode ser NULL.
[in] Size
Especifica o tamanho, em bytes, em Buffer, zero se Buffer for NULL.
Retornar valor
Quando NdisClCloseCall retorna qualquer coisa diferente de NDIS_STATUS_PENDING, o cliente deve fazer uma chamada interna para sua Função ProtocolClCloseCallComplete . Caso contrário, o NDIS chamará a função ProtocolClCloseCallComplete do cliente quando essa operação for concluída.
Comentários
Os clientes geralmente chamam NdisClCloseCall em qualquer uma das seguintes circunstâncias:
- Para fechar uma chamada estabelecida, se a chamada foi iniciada pelo cliente com NdisClMakeCall ou se foi oferecida por um par remoto e aceita pelo cliente Função ProtocolClIncomingCall .
-
Na lista Função ProtocolClIncomingCloseCall para derrubar uma chamada estabelecida.
Isso ocorre quando a parte remota fecha uma chamada de entrada que a parte remota iniciou originalmente e que o cliente aceitou. Para chamadas de saída iniciadas pelo cliente, isso ocorre quando a parte remota fecha a conexão ponto a ponto no nó remoto ou quando a última parte restante em uma VC de vários pontos fecha a chamada no nó remoto.
-
Na lista Função ProtocolClMakeCallComplete para derrubar uma tentativa iniciada pelo cliente de fazer uma chamada de saída.
Isso ocorrerá se o gerenciador de chamadas tiver modificado os parâmetros de chamada especificados pelo cliente passados para NdisClMakeCall e o cliente achar essas modificações inaceitáveis.
-
Da função ProtocolClIncomingQoSChange para derrubar uma chamada estabelecida.
Isso ocorrerá se uma alteração de QoS proposta pela outra parte na VC for inaceitável para o cliente.
-
Na lista Função ProtocolClModifyCallQoSComplete para derrubar uma chamada estabelecida.
Isso ocorrerá se uma alteração de QoS proposta pelo cliente na VC não for aceita e o QoS modificado por CM retornado ao ProtocolClModifyCallQoSComplete for inaceitável para o cliente.
A chamada de um cliente para NdisClCloseCall faz com que o NDIS marque o NdisVcHandle como fechando e chame a função ProtocolCmCloseCall do CM.
Para derrubar uma chamada estabelecida em uma VC de vários pontos criada pelo cliente, o cliente deve chamar NdisClDropParty uma ou mais vezes para liberar todas, exceto a última parte na VC, antes de chamar NdisClCloseCall. O gerenciador de chamadas falhará na solicitação de qualquer cliente para fechar uma chamada de vários pontos se a VC fornecida ainda tiver mais de uma parte conectada. O NdisPartyHandle passado para NdisClCloseCall pode ser qualquer identificador válido que o cliente obteve de suas chamadas anteriores para NdisClAddParty ou NdisClMakeCall com o NdisVcHandle fornecido.
Como partes remotas de uma solicitação de chamada multiponto iniciada pelo cliente para que suas conexões sejam fechadas, o NDIS chama a função ProtocolClDropParty do cliente, desde que exista mais de uma parte pendente na VC de vários pontos criados pelo cliente. Quando a última parte remota restante fecha sua conexão, o NDIS chama o clienteEm vez disso, a função ProtocolClIncomingCloseCall. Consequentemente, a função ProtocolClIncomingCloseCall de qualquer cliente que configure conexões de vários pontos deve identificar a última parte restante em seus VCs de vários pontos e passar o NdisPartyHandle apropriado para NdisClCloseCall.
Depois que o cliente libera um NdisPartyHandle com NdisClCloseCall, ele pode liberar (ou reinicializar para reutilizar) os recursos para o estado por parte que estava mantendo. No entanto, o cliente não pode liberar ou reutilizar seus recursos por VC de maneira semelhante ao concluir a operação iniciada com NdisClCloseCall porque o NdisVcHandle, que não pode ser reutilizado para fazer outra chamada porque está marcado como fechamento, ainda é válido até que a VC seja destruída. O cliente deverá chamar NdisCoDeleteVc se ele criou a VC para uma chamada de saída antes de liberar ou reinicializar seus recursos por VC ou o cliente deverá adiar a versão ou a reinicialização desses recursos até que sua função ProtocolCoDeleteVc seja chamada.
Requisitos
Requisito | Valor |
---|---|
Cliente mínimo com suporte | Com suporte para drivers NDIS 6.0 e NDIS 5.1 (consulte NdisClCloseCall (NDIS 5.1)) no Windows Vista. Com suporte para drivers NDIS 5.1 (consulte NdisClCloseCall (NDIS 5.1)) no Windows XP. |
Plataforma de Destino | Área de Trabalho |
Cabeçalho | ndis.h (inclua Ndis.h) |
Biblioteca | Ndis.lib |
IRQL | <= DISPATCH_LEVEL |
Regras de conformidade de DDI | Irql_Protocol_Driver_Function(ndis) |