Compartilhar via


Registrando e abrindo uma família de endereços

Um gerenciador de chamadas deve registrar uma família de endereços para cada NIC na qual fornece serviços do gerenciador de chamadas para clientes orientados à conexão. Da mesma forma, um driver MCM deve registrar uma família de endereços para a NIC que ele gerencia.

Ao registrar uma família de endereços, um gerenciador de chamadas ou driver MCM faz com que o NDIS anuncie os serviços do gerenciador de chamadas ou do driver MCM a todos os clientes orientados à conexão que se associam ao adaptador.

Se um cliente orientado a conexão puder usar os serviços anunciados por um gerenciador de chamadas ou driver MCM, ele poderá abrir uma família de endereços com o gerenciador de chamadas ou o driver MCM.

Registrando uma família de endereços de um gerenciador de chamadas

Depois que sua função ProtocolBindAdapterEx se associa a um driver de miniporto subjacente com NdisOpenAdapterEx, um gerenciador de chamadas chama NdisCmRegisterAddressFamilyEx para registrar uma família de endereços para a associação (consulte a figura a seguir).

Diagrama ilustrando o processo de registro e abertura de uma família de endereços com um gerenciador de chamadas.

A chamada para NdisCmRegisterAddressFamilyEx anuncia os serviços de sinalização específicos do gerenciador de chamadas. Um gerenciador de chamadas deve registrar uma família de endereços sempre que sua função ProtocolBindAdapterEx for chamada e vinculada com êxito a uma NIC com NdisOpenAdapterEx.

O gerenciador de chamadas pode dar suporte a mais de uma família de endereços em todos os drivers de miniporta aos quais ele está associado. O gerenciador de chamadas também pode dar suporte a mais de uma família de endereços em uma única NIC à qual está associada. O gerenciador de chamadas deve registrar os mesmos pontos de entrada para cada família de endereços na associação. Apenas um gerenciador de chamadas pode dar suporte a um tipo específico de família de endereços para clientes associados a qualquer driver de miniporto específico. Para obter mais informações sobre como registrar pontos de entrada para um gerenciador de chamadas, consulte Registro do CoNDIS.

Registrando uma família de endereços de um driver MCM

Um driver MCM chama NdisMCmRegisterAddressFamilyEx de sua função MiniportInitializeEx depois de registrar seus pontos de entrada de driver de miniport com NdisMRegisterMiniportDriver. Para obter mais informações sobre pontos de entrada de regsitering, consulte Registro de CoNDIS. Um driver MCM chama NdisMCmRegisterAddressFamilyEx uma vez para anunciar seus serviços para clientes orientados à conexão (consulte a figura a seguir).

Diagrama ilustrando o processo de registro e abertura de uma família de endereços com um driver MCM.

Um driver de miniporta de uma NIC que tem suporte de sinalização orientado a conexão a bordo pode se registrar como um driver MCM, mesmo que um gerenciador de chamadas possa estar disponível. Ao fazer isso, um driver MCM preempõe o gerenciador de chamadas como o gerenciador de chamadas para essa NIC.

Abrindo uma família de endereços

Uma chamada do gerenciador de chamadas ou do driver MCM para Ndis(M)CmRegisterAddressFamily faz com que o NDIS chame a função ProtocolCoAfRegisterNotify de cada cliente orientado a conexão na associação (conforme mostrado em duas figuras anteriores).

ProtocolCoAfRegisterNotify examina os dados da família de endereços para determinar se o cliente pode usar os serviços desse driver CM ou MCM específico. Se o cliente pode fazer modificações nos dados de família de endereços fornecidos por CM (M)depende do suporte de protocolo de sinalização específico do gerenciador de chamadas ou do driver MCM.

Se o cliente achar os serviços de gerenciamento de chamadas oferecidos aceitáveis, ProtocolCoAfRegisterNotify alocará uma área de contexto por AF para o cliente e chamará NdisClOpenAddressFamilyEx. NdisClOpenAddressFamilyEx não registra os pontos de entrada orientados à conexão do cliente com o NDIS. Para obter mais informações sobre como registrar pontos de entrada orientados a conexão com o NDIS, consulte Registro de CoNDIS.

A chamada para NdisClOpenAddressFamilyEx faz com que o NDIS chame a função ProtocolCmOpenAf do gerenciador de chamadas ou do driver MCM (conforme mostrado já nas duas figuras anteriores). ProtocolCmOpenAf garante que o cliente passou em uma família de endereços válida e aloca e inicializa os recursos necessários para executar operações em nome do cliente que está abrindo esta instância da família de endereços. ProtocolCmOpenAf também armazena um NdisAfHandle fornecido pelo NDIS que representa a associação entre o gerenciador de chamadas e o cliente para a família de endereços abertos.

ProtocolCmOpenAf pode ser concluído de forma síncrona ou assíncrona. Para ser concluída de forma assíncrona, a função ProtocolCmOpenAf de um gerenciador de chamadas chama NdisCmOpenAddressFamilyComplete; a função ProtocolCmOpenAf de um driver MCM chama NdisMCmOpenAddressFamilyComplete. A chamada para Ndis(M)CmOpenAddressFamilyComplete faz com que o NDIS chame a função ProtocolOpenAfComplete do cliente que originalmente chamou NdisClOpenAddressFamilyEx.

Se a chamada do cliente para NdisClOpenAddressFamilyEx for bem-sucedida, o NDIS retornará ao cliente um NdisAfHandle que representa a associação entre o gerenciador de chamadas e o cliente para a família de endereços abertos.

Se um cliente aceitar chamadas de entrada, ele geralmente registrará um ou mais SAPs de sua função ProtocolClOpenAfCompleteEx chamando NdisClRegisterSap após sua chamada bem-sucedida para NdisClOpenAddressFamilyEx.

Se um cliente fizer chamadas de saída, ele poderá criar um ou mais VCs em sua função ProtocolClOpenAfCompleteEx em antecipação a uma solicitação de um ou mais clientes para fazer uma chamada de saída.