Allocazione di una porta NDIS

Per allocare una porta NDIS per un adattatore miniport, un driver miniport chiama la funzione NdisMAllocatePort . NdisMAllocatePort è sincrono e restituisce dopo che NDIS ha allocato correttamente le risorse necessarie per la porta.

Prima che il driver miniport chiami NdisMAllocatePort, il driver deve chiamare la funzione NdisMSetMiniportAttributes per impostare gli attributi nella struttura NDIS_MINIPORT_ADAPTER_REGISTRATION_ATTRIBUTES . I driver Miniport possono chiamare NdisMAllocatePort per un adattatore miniport dopo che la chiamata a NdisMSetMiniportAttributes restituisce correttamente e prima che NDIS chiami la funzione MiniportHaltEx per tale scheda miniport.

NDIS alloca sempre la porta predefinita (porta zero), quindi i driver miniport non devono allocare una porta predefinita. NDIS libera la porta predefinita dopo che il driver miniport restituisce il formato MiniportHaltEx.

NDIS assegna un numero di porta a una porta quando il driver miniport chiama NdisMAllocatePort. Il driver specifica le caratteristiche della porta nella struttura NDIS_PORT_CHARACTERISTICS prima che il driver chiami NdisMAllocatePort. Quando NdisMAllocatePort viene restituito correttamente, il membro PortNumber di NDIS_PORT_CHARACTERISTICS specificato dal parametro PortCharacteristics viene impostato sul numero di porta assegnato dall'NDIS alla porta.

Prima di tornare da MiniportHaltEx, un driver miniport deve chiamare la funzione NdisMFreePort per liberare tutte le porte associate a un adattatore miniport. Se l'inizializzazione di un adattatore miniport non riesce, il driver deve chiamare NdisMFreePort per liberare tutte le porte allocate prima che venga restituito dalla funzione MiniportInitializeEx . Per altre informazioni sulla liberazione delle porte NDIS, vedere Freeing NDIS Ports .For more information about freeing NDIS ports, see Freeing NDIS Ports.

Il numero massimo di porte che un driver miniport può allocare è 0xffffff. Tuttavia, in pratica, i driver imposteranno un numero massimo basato sul tipo di porta e sui requisiti dell'applicazione driver. Ad esempio, per un'applicazione bridge, è improbabile che il numero di porte superi 16. Il numero di porte sarebbe superiore per i punti di accesso che usano porte supplicanti 802.1x e significativamente più elevate per i driver WAN che usano porte VPN (Virtual Private Network).

Dopo che un driver miniport alloca una porta, la porta è nello stato allocato e la porta non è attiva. Non è possibile usare una porta per inviare e ricevere dati, avviare un'indicazione di stato, inviare una richiesta OID o avviare un evento Plug and Play (PnP), fino all'attivazione della porta. NDIS attiva automaticamente la porta predefinita dopo che il driver miniport imposta gli attributi di registrazione in una struttura NDIS_MINIPORT_ADAPTER_REGISTRATION_ATTRIBUTES . Per richiedere che NDIS non attivi la porta predefinita, un driver miniport può impostare NDIS_MINIPORT_ATTRIBUTES_CONTROLS_DEFAULT_PORT nel membro AttributeFlags di NDIS_MINIPORT_ADAPTER_REGISTRATION_ATTRIBUTES.

NDIS passa lo stato di autenticazione della porta predefinita alla funzione MiniportInitializeEx nel membro DefaultPortAuthStates della struttura NDIS_MINIPORT_INIT_PARAMETERS . Se un driver miniport controlla la porta predefinita, quando il driver miniport attiva la porta predefinita, può attivare la porta predefinita usando le impostazioni di autenticazione predefinite. Per altre informazioni sull'attivazione della porta predefinita, vedere Attivazione delle porte NDIS.

I driver Miniport possono usare il flag NDIS_PORT_CHAR_USE_DEFAULT_AUTH_SETTINGS nel membro Flags della struttura NDIS_PORT_CHARACTERISTICS per le porte allocate e attivate dai driver. Per il caso di allocazione, NDIS assegna gli stati di autenticazione predefiniti alle nuove porte e ignora gli stati di autenticazione passati alla funzione NdisMAllocatePort .

Per altre informazioni sugli stati delle porte NDIS, vedere Stati di porta NDIS. Per altre informazioni sull'attivazione delle porte, vedere Attivazione delle porte NDIS.