PROTOCOL_CM_CLOSE_CALL função de retorno de chamada (ndis.h)

A função ProtocolCmCloseCall é uma função necessária que encerra uma chamada existente e libera todos os recursos alocados pelo gerenciador de chamadas para a chamada.

Nota Você deve declarar a função usando o tipo PROTOCOL_CM_CLOSE_CALL . Para obter mais informações, consulte a seção Exemplos a seguir.
 

Sintaxe

PROTOCOL_CM_CLOSE_CALL ProtocolCmCloseCall;

NDIS_STATUS ProtocolCmCloseCall(
  [in]           NDIS_HANDLE CallMgrVcContext,
  [in, optional] NDIS_HANDLE CallMgrPartyContext,
  [in, optional] PVOID CloseData,
  [in, optional] UINT Size
)
{...}

Parâmetros

[in] CallMgrVcContext

Especifica o identificador para uma área de contexto alocada pelo gerenciador de chamadas na qual o gerenciador de chamadas mantém seu estado por VC. Esse identificador foi fornecido ao NDIS da função ProtocolCmMakeCall dos gerenciadores de chamadas.

[in, optional] CallMgrPartyContext

Especifica o identificador, se houver, para uma área de contexto alocada pelo gerenciador de chamadas na qual o gerenciador de chamadas mantém informações sobre uma parte em uma VC de vários pontos. Esse identificador será NULL se a chamada que está sendo fechada não for uma chamada de vários pontos.

[in, optional] CloseData

Ponteiro para um buffer que contém dados especificados pelo cliente orientados à conexão que devem ser enviados pela conexão antes que a chamada seja encerrada. Esse parâmetro será NULL se o meio de rede subjacente não oferecer suporte a transferências de dados ao fechar uma conexão.

[in, optional] Size

Especifica o comprimento, em bytes, do buffer em CloseData, zero se CloseData for NULL.

Retornar valor

ProtocolCmCloseCall retorna o status de suas operações como um dos seguintes:

Código de retorno Descrição
NDIS_STATUS_SUCCESS
Indica que o gerenciador de chamadas encerrou a chamada com êxito.
NDIS_STATUS_PENDING
Indica que o gerenciador de chamadas concluirá a solicitação para encerrar a chamada de forma assíncrona. Quando o gerenciador de chamadas tiver concluído todas as operações necessárias para encerrar a conexão, ele deverá chamar NdisCmCloseCallComplete para sinalizar ao NDIS que a chamada foi fechada.
NDIS_STATUS_INVALID_DATA
Indica que CloseData foi especificado, mas o meio de rede subjacente não dá suporte ao envio simultâneo de dados com o encerramento de uma chamada.
NDIS_STATUS_XXX
Indica que o gerenciador de chamadas não pôde encerrar a chamada. O erro real retornado pode ser um status propagado de outra rotina de biblioteca NDIS.

Comentários

ProtocolCmCloseCall se comunicou com dispositivos de controle de rede ou outros atores específicos da mídia, conforme exigido por sua mídia, para encerrar uma conexão entre o nó local e um nó remoto. Se o gerenciador de chamadas for necessário para se comunicar com dispositivos de controle de rede (como um comutador de rede), ele deverá usar uma conexão virtual com o dispositivo de controle de rede estabelecido em sua função ProtocolBindAdapterEx . Os gerenciadores de chamadas autônomos se comunicam com esses dispositivos de rede chamando NdisCoSendNetBufferLists. Drivers de miniport com suporte integrado de gerenciamento de chamadas nunca chamam NdisCoSendNetBufferLists. Em vez disso, eles transmitem os dados diretamente pela rede.

Se CloseData não for NULL e o envio de dados no encerramento da conexão for compatível com a mídia que esse gerenciador de chamadas manipula, o gerenciador de chamadas deverá transmitir os dados especificados em CloseData para o nó remoto antes de concluir o encerramento da chamada. Se não houver suporte para o envio simultâneo de dados com uma conexão que está sendo encerrada, os gerenciadores de chamadas deverão retornar NDIS_STATUS_INVALID_DATA.

Se ProtocolCmCloseCall for passado um CallMgrPartyContext explícito, a chamada que está sendo encerrada será uma VC de vários pontos e o gerenciador de chamadas deverá executar qualquer comunicação de rede necessária com seu hardware de rede, conforme apropriado para seu tipo de mídia, para encerrar a chamada como uma chamada de vários pontos. O gerenciador de chamadas também deve liberar a memória que alocou anteriormente, em ProtocolCmMakeCall, para seu estado por parte apontado por CallMgrPartyContext . Falha ao liberar, desalocar ou desativar corretamente esses recursos causa um vazamento de memória.

Depois que a chamada tiver sido encerrada com a rede, todos os dados próximos serão enviados e todos os recursos em CallMgrPartyContext forem liberados, o gerenciador de chamadas deverá chamar NdisCmDeactivateVc. Isso notifica o NDIS e o driver de miniporto subjacente, se houver, para não esperar nenhuma transferência adicional na VC fornecida.

Exemplos

Para definir uma função ProtocolCmCloseCall , primeiro você deve fornecer uma declaração de função que identifique o tipo de função que você está definindo. O Windows fornece um conjunto de tipos de função para drivers. Declarar uma função usando os tipos de função ajuda a Análise de Código para Drivers, SDV ( Verificador de Driver Estático ) e outras ferramentas de verificação a encontrar erros e é um requisito para gravar drivers para o sistema operacional Windows.

Por exemplo, para definir uma função ProtocolCmCloseCall chamada "MyCmCloseCall", use o tipo PROTOCOL_CM_CLOSE_CALL conforme mostrado neste exemplo de código:

PROTOCOL_CM_CLOSE_CALL MyCmCloseCall;

Em seguida, implemente sua função da seguinte maneira:

_Use_decl_annotations_
NDIS_STATUS
 MyCmCloseCall(
    NDIS_HANDLE  CallMgrVcContext,
    NDIS_HANDLE  CallMgrPartyContext,
    PVOID  CloseData,
    UINT  Size
    )
  {...}

O tipo de função PROTOCOL_CM_CLOSE_CALL é definido no arquivo de cabeçalho Ndis.h. Para identificar erros com mais precisão ao executar as ferramentas de análise de código, adicione a anotação Use_decl_annotations à sua definição de função. A anotação Use_decl_annotations garante que as anotações aplicadas ao tipo de função PROTOCOL_CM_CLOSE_CALL no arquivo de cabeçalho sejam usadas. Para obter mais informações sobre os requisitos para declarações de função, consulte Declarando funções usando tipos de função de função para drivers NDIS.

Para obter informações sobre Use_decl_annotations, consulte Anotando o comportamento da função.

Requisitos

Requisito Valor
Cliente mínimo com suporte Com suporte para drivers NDIS 6.0 e NDIS 5.1 (consulte ProtocolCmCloseCall (NDIS 5.1)) no Windows Vista. Com suporte para drivers NDIS 5.1 (consulte ProtocolCmCloseCall (NDIS 5.1)) no Windows XP.
Plataforma de Destino Windows
Cabeçalho ndis.h (inclua Ndis.h)
IRQL <= DISPATCH_LEVEL

Confira também

NdisClMakeCall

NdisCmDeactivateVc

NdisCoSendNetBufferLists

ProtocolCmMakeCall