Partager via


Allocation d’un port NDIS

Pour allouer un port NDIS à un adaptateur miniport, un pilote miniport appelle la fonction NdisMAllocatePort . NdisMAllocatePort est synchrone et retourne une fois que NDIS a correctement alloué les ressources requises pour le port.

Avant que le pilote miniport appelle NdisMAllocatePort, le pilote doit appeler la fonction NdisMSetMiniportAttributes pour définir les attributs dans la structure NDIS_MINIPORT_ADAPTER_REGISTRATION_ATTRIBUTES . Les pilotes Miniport peuvent appeler NdisMAllocatePort pour un adaptateur miniport après que l’appel à NdisMSetMiniportAttributes retourne correctement et avant que NDIS appelle la fonction MiniportHaltEx pour cet adaptateur miniport.

NDIS alloue toujours le port par défaut (port zéro) de sorte que les pilotes miniport ne doivent pas allouer de port par défaut. NDIS libère le port par défaut une fois que le pilote miniport retourne la forme MiniportHaltEx.

NDIS affecte un numéro de port à un port lorsque le pilote miniport appelle NdisMAllocatePort. Le pilote spécifie les caractéristiques de port dans la structure NDIS_PORT_CHARACTERISTICS avant que le pilote appelle NdisMAllocatePort. Lorsque NdisMAllocatePort retourne correctement, le membre PortNumber de NDIS_PORT_CHARACTERISTICS que le paramètre PortCharacteristics spécifie est défini sur le numéro de port attribué par NDIS au port.

Avant de revenir de MiniportHaltEx, un pilote miniport doit appeler la fonction NdisMFreePort pour libérer tous les ports associés à un adaptateur miniport. Si un adaptateur miniport échoue à l’initialisation, le pilote doit appeler NdisMFreePort pour libérer tous les ports alloués par le pilote avant qu’il ne retourne à partir de la fonction MiniportInitializeEx . Pour plus d’informations sur la libération de ports NDIS, consultez Libération de ports NDIS.

Le nombre maximal de ports qu’un pilote miniport peut allouer est 0xffffff. Toutefois, dans la pratique, les pilotes définissent un nombre maximal basé sur le type de port et les exigences de l’application de pilote. Par exemple, pour une application de pont, il est peu probable que le nombre de ports dépasse 16. Le nombre de ports serait plus élevé pour les points d’accès qui utilisent des ports 802,1 fois plus importants et beaucoup plus élevé pour les pilotes WAN qui utilisent des ports de réseau privé virtuel (VPN).

Une fois qu’un pilote miniport alloue un port, le port est dans l’état alloué et le port n’est pas actif. Un port ne peut pas être utilisé pour envoyer et recevoir des données, lancer une indication status, émettre une demande OID ou lancer un événement Plug-and-Play (PnP) tant que le port n’est pas activé. NDIS active automatiquement le port par défaut après que le pilote miniport a défini les attributs d’inscription dans une structure de NDIS_MINIPORT_ADAPTER_REGISTRATION_ATTRIBUTES . Pour demander que NDIS n’active pas le port par défaut, un pilote miniport peut définir NDIS_MINIPORT_ATTRIBUTES_CONTROLS_DEFAULT_PORT dans le membre AttributeFlags de NDIS_MINIPORT_ADAPTER_REGISTRATION_ATTRIBUTES.

NDIS transmet l’état d’authentification du port par défaut à la fonction MiniportInitializeEx au niveau du membre DefaultPortAuthStates de la structure NDIS_MINIPORT_INIT_PARAMETERS . Si un pilote miniport contrôle le port par défaut, lorsque le pilote miniport active le port par défaut, il peut activer le port par défaut à l’aide des paramètres d’authentification par défaut. Pour plus d’informations sur l’activation du port par défaut, consultez Activation des ports NDIS.

Les pilotes Miniport peuvent utiliser l’indicateur NDIS_PORT_CHAR_USE_DEFAULT_AUTH_SETTINGS dans le membre Flags de la structure NDIS_PORT_CHARACTERISTICS pour les ports que les pilotes allouent et activent. Pour le cas d’allocation, NDIS affecte les états d’authentification par défaut aux nouveaux ports et ignore les états d’authentification passés à la fonction NdisMAllocatePort .

Pour plus d’informations sur les états de port NDIS, consultez États de port NDIS. Pour plus d’informations sur l’activation des ports, consultez Activation des ports NDIS.