PROTOCOL_CL_INCOMING_CLOSE_CALL função de retorno de chamada (ndis.h)
A função ProtocolClIncomingCloseCall é usada por todos os clientes NDIS orientados à conexão. Todos esses clientes devem ter funções de protocolclIncomingCloseCall totalmente funcionais.
Sintaxe
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 o status que indica a causa do teardown de conexão, que geralmente é NDIS_STATUS_SUCCESS para indicar que a parte remota da chamada solicitou que a conexão fosse fechada. Qualquer outro valor indica que problemas na rede fizeram com que o gerenciador de chamadas encerrasse a conexão.
[in] ProtocolVcContext
Especifica o identificador para a área de contexto por VC do cliente para a VC na qual a conexão está sendo fechada. Seja qual for o valor de CloseStatus, o cliente não pode nem enviar nem receber dados no VC designado pelo NdisVcHandle que ele armazenou nessa área de contexto.
[in] CloseData
Ponteiro para um buffer que contém uma mensagem de fechamento específica do protocolo, possivelmente uma fornecida pelo cliente remoto que o gerenciador de chamadas recebeu pela rede ou esse parâmetro pode ser NULL.
Quando closeStatus é NDIS_STATUS_SUCCESS, esse parâmetro é NULL se o meio de rede subjacente não dá suporte a transferências de dados ao fechar uma conexão. No entanto, qualquer gerenciador de chamadas em particular pode definir uma estrutura para passar informações de diagnóstico adicionais para seus clientes em teardowns de chamada causados por problemas na rede.
[in] Size
Especifica o tamanho em bytes do buffer em CloseData, zero se CloseData estiver NULL.
Valor de retorno
Nenhum
Observações
Uma chamada para ProtocolClIncomingCloseCall indica que ocorreu um destes procedimentos:
- O gerenciador de chamadas recebeu uma solicitação pela rede para fechar uma conexão estabelecida, identificada pelo NdisVcHandle que o cliente armazenou em sua área de contexto por VC em ProtocolVcContext.
- O gerenciador de chamadas detectou que problemas de rede impedirão novas transferências de dados na conexão estabelecida.
Se o VC determinado é uma conexão de ponto único ou multiponto, ProtocolClIncomingCloseCall deve chamar NdisClCloseCall para reconhecer que o cliente não tentará enviar nem espera receber dados neste VC específico. Se o gerenciador de chamadas tiver criado essa VC, ProtocolClIncomingCloseCall deverá retornar o controle depois de chamar NdisClCloseCall. É responsabilidade do gerenciador de chamadas destruir ou reutilizar qualquer VC que ele criou.
Se o cliente criou originalmente essa VC para uma chamada de saída, ProtocolClIncomingCloseCall poderá fazer um dos seguintes procedimentos depois de chamar NdisClDropParty quantas vezes for necessário, se houver, e NdisClCloseCall:
- Se CloseStatus for NDIS_STATUS_SUCCESS, derrube o VC com NdisCoDeleteVc e libere a área de contexto por VC do cliente ou prepare-a para reutilização em uma chamada subsequente para NdisCoCreateVc.
- Se CloseStatus for NDIS_STATUS_SUCCESS, mantenha a VC que o cliente criou e prepare sua área de contexto por VC para reutilização em uma chamada subsequente para NdisClMakeCall.
- Caso contrário, derrube o VC com NdisCoDeleteVc e libere sua área de contexto por VC se o gerenciador de chamadas indicasse que a rede se tornou inoperante.
exemplos de
Para definir uma função ProtocolClIncomingCloseCall, 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 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 ProtocolClIncomingCloseCall chamada "MyClIncomingCloseCall", use o tipo PROTOCOL_CL_INCOMING_CLOSE_CALL conforme mostrado neste exemplo de código:
PROTOCOL_CL_INCOMING_CLOSE_CALL MyClIncomingCloseCall;
Em seguida, implemente sua função da seguinte maneira:
_Use_decl_annotations_
VOID
MyClIncomingCloseCall(
NDIS_STATUS CloseStatus,
NDIS_HANDLE ProtocolVcContext,
PVOID CloseData,
UINT Size
)
{...}
O tipo de função PROTOCOL_CL_INCOMING_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_CL_INCOMING_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 |
---|---|
de cliente com suporte mínimo | Com suporte para drivers NDIS 6.0 e NDIS 5.1 (consulte ProtocolClIncomingCloseCall (NDIS 5.1)) no Windows Vista. Com suporte para drivers NDIS 5.1 (consulte ProtocolClIncomingCloseCall (NDIS 5.1)) no Windows XP. |
da Plataforma de Destino | Windows |
cabeçalho | ndis.h (inclua Ndis.h) |
IRQL | <= DISPATCH_LEVEL |