Alocando uma porta NDIS

Para alocar uma porta NDIS para um adaptador de miniporto, um driver de miniporto chama a função NdisMAllocatePort . NdisMAllocatePort é síncrono e retorna depois que o NDIS aloca com êxito os recursos necessários para a porta.

Antes que o driver de miniporto chame NdisMAllocatePort, o driver deve chamar a função NdisMSetMiniportAttributes para definir os atributos na estrutura NDIS_MINIPORT_ADAPTER_REGISTRATION_ATTRIBUTES . Os drivers de miniport podem chamar NdisMAllocatePort para um adaptador de miniporte após a chamada para NdisMSetMiniportAttributes retornar com êxito e antes que o NDIS chame a função MiniportHaltEx para esse adaptador de miniport.

O NDIS sempre aloca a porta padrão (porta zero) para que os drivers de miniporte não aloquem uma porta padrão. O NDIS libera a porta padrão depois que o driver de miniporto retorna o formulário MiniportHaltEx.

O NDIS atribui um número de porta a uma porta quando o driver de miniporto chama NdisMAllocatePort. O driver especifica características de porta na estrutura NDIS_PORT_CHARACTERISTICS antes que o driver chame NdisMAllocatePort. Quando NdisMAllocatePort retorna com êxito , o membro PortNumber de NDIS_PORT_CHARACTERISTICS que o parâmetro PortCharacteristics especifica é definido como o número da porta que o NDIS atribuiu à porta.

Antes de retornar do MiniportHaltEx, um driver de miniporto deve chamar a função NdisMFreePort para liberar todas as portas associadas a um adaptador de miniport. Se um adaptador de miniporto falhar na inicialização, o driver deverá chamar NdisMFreePort para liberar todas as portas alocadas pelo driver antes de retornar da função MiniportInitializeEx . Para obter mais informações sobre como liberar portas NDIS, consulte Liberando portas NDIS.

O número máximo de portas que um driver de miniporto pode alocar é 0xffffff. No entanto, na prática, os drivers definirão um número máximo baseado no tipo de porta e nos requisitos do aplicativo de driver. Por exemplo, para um aplicativo de ponte, é improvável que o número de portas exceda 16. O número de portas seria maior para pontos de acesso que usam portas supplicantes de 802,1x e significativamente maior para drivers de WAN que usam portas VPN (rede virtual privada).

Depois que um driver de miniporto aloca uma porta, a porta está no estado alocado e a porta não está ativa. Uma porta não pode ser usada para enviar e receber dados, iniciar uma indicação status, emitir uma solicitação OID ou iniciar um evento de Plug and Play (PnP) até que a porta seja ativada. O NDIS ativa a porta padrão automaticamente depois que o driver de miniporto define os atributos de registro em uma estrutura NDIS_MINIPORT_ADAPTER_REGISTRATION_ATTRIBUTES . Para solicitar que o NDIS não ative a porta padrão, um driver de miniporte pode definir NDIS_MINIPORT_ATTRIBUTES_CONTROLS_DEFAULT_PORT no membro AttributeFlags do NDIS_MINIPORT_ADAPTER_REGISTRATION_ATTRIBUTES.

O NDIS passa o estado de autenticação da porta padrão para a função MiniportInitializeEx no membro DefaultPortAuthStates da estrutura NDIS_MINIPORT_INIT_PARAMETERS . Se um driver de miniporto controlar a porta padrão, quando o driver de miniporto ativar a porta padrão, ele poderá ativar a porta padrão usando as configurações de autenticação padrão. Para obter mais informações sobre como ativar a porta padrão, consulte Ativando portas NDIS.

Os drivers de miniporto podem usar o sinalizador NDIS_PORT_CHAR_USE_DEFAULT_AUTH_SETTINGS no membro Flags da estrutura NDIS_PORT_CHARACTERISTICS para as portas que os drivers alocam e ativam. Para o caso de alocação, o NDIS atribui os estados de autenticação padrão às novas portas e ignora os estados de autenticação que são passados para a função NdisMAllocatePort .

Para obter mais informações sobre estados de porta NDIS, consulte Estados de porta NDIS. Para obter mais informações sobre como ativar portas, consulte Ativando portas NDIS.