Compartilhar via


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

O NDIS chama a função ProtocolCloseAdapterCompleteEx de um driver de protocolo para concluir uma operação de adaptador próxima para a qual a função NdisCloseAdapterEx retornou NDIS_STATUS_PENDING.

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

Sintaxe

PROTOCOL_CLOSE_ADAPTER_COMPLETE_EX ProtocolCloseAdapterCompleteEx;

void ProtocolCloseAdapterCompleteEx(
  [in] NDIS_HANDLE ProtocolBindingContext
)
{...}

Parâmetros

[in] ProtocolBindingContext

Um identificador para uma área de contexto alocada pelo driver de protocolo. O driver de protocolo mantém as informações de contexto por associação nessa área de contexto. O driver forneceu esse identificador para o NDIS quando o driver chamou a função NdisOpenAdapterEx .

Retornar valor

Nenhum

Comentários

ProtocolCloseAdapterCompleteEx é uma função necessária.

Se ProtocolUnbindAdapterEx estiver aguardando o NDIS chamar ProtocolCloseAdapterCompleteEx, essa função poderá simplesmente indicar que foi chamada e retornada (por exemplo, atualiza a área de contexto ProtocolBindingContext ). Isso permite que a função ProtocolCloseAdapterCompleteEx conclua a operação desassociada.

Depois que o driver de protocolo chama a função NdisCloseAdapterEx , o identificador NdisBindingHandle retornado pela função NdisOpenAdapterEx não é mais válido. Portanto, ProtocolCloseAdapterCompleteEx não pode chamar nenhuma função NdisXxx que exija esse identificador como um parâmetro.

Se a opçãoA função ProtocolUnbindAdapterEx ainda não fez isso, ProtocolCloseAdapterCompleteEx pode liberar os recursos alocados pelo driver de protocolo para operações de E/S de rede por associação.

Se ProtocolUnbindAdapterEx retornou NDIS_STATUS_PENDING e salvou o identificador UnbindContext na área de contexto em ProtocolBindingContext, ProtocolCloseAdapterCompleteEx poderá chamar o Função NdisCompleteUnbindAdapterEx para concluir a operação de desassociação. Consequentemente, ProtocolCloseAdapterCompleteEx não deve liberar a área de contexto até que chame NdisCompleteUnbindAdapterEx.

O NDIS chama ProtocolCloseAdapterCompleteEx em IRQL = PASSIVE_LEVEL.

Exemplos

Para definir uma função ProtocolCloseAdapterCompleteEx , 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 escrever drivers para o sistema operacional Windows.

Por exemplo, para definir uma função ProtocolCloseAdapterCompleteEx chamada "MyCloseAdapterCompleteEx", use o tipo PROTOCOL_CLOSE_ADAPTER_COMPLETE_EX conforme mostrado neste exemplo de código:

PROTOCOL_CLOSE_ADAPTER_COMPLETE_EX MyCloseAdapterCompleteEx;

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

_Use_decl_annotations_
VOID
 MyCloseAdapterCompleteEx(
    NDIS_HANDLE  ProtocolBindingContext
    )
  {...}

O tipo de função PROTOCOL_CLOSE_ADAPTER_COMPLETE_EX é 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_CLOSE_ADAPTER_COMPLETE_EX 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 no NDIS 6.0 e posterior.
Plataforma de Destino Windows
Cabeçalho ndis.h (inclua Ndis.h)
IRQL PASSIVE_LEVEL

Confira também

NdisCloseAdapterEx

NdisCompleteUnbindAdapterEx

NdisOpenAdapterEx

ProtocolUnbindAdapterEx