NdisOpenAdapter, fonction (ndis.h)

Note NDIS 5. x a été déconseillé et est remplacé par NDIS 6. x. Pour le développement de nouveaux pilotes NDIS, consultez Pilotes réseau à partir de Windows Vista. Pour plus d’informations sur le portage de NDIS 5. x pilotes dans NDIS 6. x, consultez Portage des pilotes NDIS 5.x vers NDIS 6.0.

NdisOpenAdapter configure une liaison entre le protocole appelant et un pilote de carte réseau sous-jacent particulier ou un pilote intermédiaire NDIS.

Syntaxe

void NdisOpenAdapter(
  [out]          PNDIS_STATUS Status,
  [out]          PNDIS_STATUS OpenErrorStatus,
  [out]          PNDIS_HANDLE NdisBindingHandle,
  [out]          PUINT        SelectedMediumIndex,
  [in]           PNDIS_MEDIUM MediumArray,
  [in]           UINT         MediumArraySize,
  [in]           NDIS_HANDLE  NdisProtocolHandle,
  [in]           NDIS_HANDLE  ProtocolBindingContext,
  [in]           PNDIS_STRING AdapterName,
  [in]           UINT         OpenOptions,
  [in, optional] PSTRING      AddressingInformation
);

Paramètres

[out] Status

Pointeur vers une variable fournie par l’appelant qui peut être l’une des valeurs suivantes au retour de cette fonction :

  • STATUS_SUCCESS
    La liaison demandée est maintenant configurée afin que l’appelant puisse utiliser les valeurs retournées dans NdisBindingHandle et SelectedMediumIndex dans les appels suivants à NdisXxx.

  • NDIS_STATUS_PENDING
    L’opération demandée est gérée de manière asynchrone, et la fonction ProtocolOpenAdapterComplete de l’appelant est appelée une fois l’ouverture terminée.

  • NDIS_STATUS_RESOURCES
    L’opération demandée a échoué, car NDIS n’a pas pu allouer suffisamment de mémoire ou initialiser l’état qu’il utilise pour suivre une liaison ouverte.

  • NDIS_STATUS_ADAPTER_NOT_FOUND
    L’opération demandée a échoué, car le nom dans AdapterName est introuvable dans l’espace de noms de l’objet système.

  • NDIS_STATUS_UNSUPPORTED_MEDIA
    Le tableau de MediumArray n’a pas spécifié de support pris en charge par NDIS ou par le pilote sous-jacent.

  • NDIS_STATUS_CLOSING
    L’appelant ou l’appareil physique ou virtuel désigné dans AdapterName est en cours de fermeture.

  • NDIS_STATUS_OPEN_FAILED
    La tentative d’ouverture a échoué pour aucune des raisons spécifiques précédentes. Par exemple, NDIS n’a peut-être pas pu initialiser le package de filtre pour le support sélectionné.

[out] OpenErrorStatus

Pointeur vers une variable fournie par l’appelant qui peut contenir une erreur NDIS_STATUS_XXX fournissant plus d’informations si NdisOpenAdapter retourne une erreur dans État. Par exemple, le pilote d’une carte réseau d’anneau de jeton peut renvoyer une erreur d’anneau dans cette variable.

[out] NdisBindingHandle

Pointeur vers une variable fournie par l’appelant dans laquelle NDIS retourne un handle représentant une liaison réussie entre l’appelant et la carte réseau physique ou virtuelle spécifiée dans AdapterName.

[out] SelectedMediumIndex

Pointeur vers une variable fournie par l’appelant dans laquelle NDIS retourne l’index de l’élément array qui spécifie le type de média utilisé par le pilote NDIS sous-jacent.

[in] MediumArray

Pointeur vers un tableau de valeurs de type NDIS_MEDIUM spécifiant les types de média que l’appelant peut prendre en charge. Les éléments possibles incluent tout sous-ensemble approprié des éléments suivants :

  • NdisMedium802_3
    Spécifie un réseau Ethernet (802.3).

  • NdisMedium802_5
    Spécifie un réseau d’anneau de jetons (802.5).

  • NdisMediumFddi
    Spécifie un réseau FDDI (Fiber Distributed Data Interface).

  • NdisMediumWan
    Spécifie un réseau étendu. Ce type couvre différentes formes de cartes réseau point à point et WAN, ainsi que des formats d’adresse/d’en-tête variants qui doivent être négociés entre le pilote de protocole et le pilote sous-jacent une fois la liaison établie.

  • NdisMediumLocalTalk
    Spécifie un réseau LocalTalk.

  • NdisMediumDix
    Spécifie un réseau Ethernet pour lequel les pilotes utilisent le format d’en-tête Ethernet DIX.

  • NdisMediumArcnetRaw
    Spécifie un réseau ARCNET.

  • NdisMediumArcnet878_2
    Spécifie un réseau ARCNET (878.2).

  • NdisMediumAtm
    Spécifie un réseau ATM. Les protocoles clients orientés connexion peuvent se lier à un pilote miniport sous-jacent qui retourne cette valeur. Sinon, les protocoles hérités se lient au pilote intermédiaire LanE fourni par le système, qui indique son type moyen comme étant NdisMedium802_3 ou NdisMedium802_5, selon la façon dont le pilote LanE est configuré par l’administrateur réseau.

  • NdisMediumWirelessWan
    Spécifie un réseau sans fil. Les pilotes miniportS NDIS 5.X qui prennent en charge les paquets lan sans fil (WLAN) ou WWAN (Wireless WAN) déclarent leur support comme NdisMedium802_3 et émulent Ethernet vers des pilotes NDIS de niveau supérieur.

    Note Ce type de média n’est pas disponible à partir de Windows Vista.

  • NdisMediumIrda
    Spécifie un réseau infrarouge (IrDA).

  • NdisMediumCoWan
    Spécifie un réseau étendu dans un environnement orienté connexion.

  • NdisMedium1394
    Spécifie un réseau IEEE 1394 (fil d’incendie).

[in] MediumArraySize

Spécifie le nombre d’éléments dans MediumArray.

[in] NdisProtocolHandle

Spécifie le handle retourné par NdisRegisterProtocol.

[in] ProtocolBindingContext

Spécifie le handle pour une zone de contexte résident fournie par l’appelant dans laquelle le protocole conserve l’état de cette liaison une fois qu’elle a été établie.

[in] AdapterName

Pointeur vers un type NDIS_STRING contenant une chaîne comptée, spécifiée dans le jeu de caractères par défaut du système, nommant la carte réseau ou l’adaptateur virtuel d’un pilote NDIS sous-jacent. Ce pilote exporte un ensemble de fonctions de bord supérieur ( MiniportXxx). Pour les pilotes Windows 2000 et versions ultérieures, cette chaîne comptée contient des caractères Unicode. Autrement dit, pour Windows 2000 et versions ultérieures, NDIS définit le type NDIS_STRING comme un type UNICODE_STRING .

[in] OpenOptions

Spécifie un masque de bits contenant les indicateurs que l’appelant transmet au pilote inférieur suivant, supposé être un pilote de carte réseau. Actuellement, ce paramètre est réservé à l’utilisation du système.

[in, optional] AddressingInformation

Pointeur vers une chaîne de longueur variable comptée facultative contenant des informations spécifiques à la carte réseau sous-jacente que le pilote de carte réseau peut utiliser pour programmer la carte réseau. Ce pointeur peut avoir la valeur NULL.

Si elles sont fournies, les informations d’adressage doivent rester valides jusqu’à la fin de l’opération d’ouverture. Un pilote de carte réseau sous-jacent prenant en charge un modem asynchrone peut utiliser ces informations pour la numérotation.

Valeur de retour

None

Remarques

Un pilote de protocole appelle NdisOpenAdapter à partir de sa fonction ProtocolBindAdapter . NDIS ne prend plus en charge l’appel de NdisOpenAdapter à partir de la fonction DriverEntry , qui était une option disponible pour les protocoles hérités (V3.0). NDIS ne prend plus en charge les protocoles V3.0. NDIS échoue toute tentative d’appel de NdisOpenAdapter en dehors du contexte de ProtocolBindAdapter.

La chaîne dans AdapterName reste valide uniquement jusqu’à ce que NdisOpenAdapter retourne le contrôle, même si elle retourne NDIS_STATUS_PENDING à Status.

Les variables de NdisBindingHandle et SelectedMediumIndex doivent être ignorées jusqu’à ce que la fonction ProtocolOpenAdapterComplete soit appelée si NdisOpenAdapter retourne NDIS_STATUS_PENDING. Étant donné que ces variables peuvent rester non valides tant que ProtocolOpenAdapterComplete n’est pas appelé, elles ne peuvent pas se trouver sur la pile. En règle générale, ces variables résident dans la zone ProtocolBindingContext , car ce handle est un paramètre d’entrée de ProtocolOpenAdapterComplete.

Un pilote de protocole doit conserver le handle retourné dans NdisProtocolHandle. Il s’agit d’un paramètre obligatoire pour d’autres fonctions NdisXxx que le pilote appelle par la suite. ProtocoleBindingContext fourni étant un paramètre d’entrée pour les fonctions ProtocolXxx de l’appelant, les protocoles passent généralement un pointeur NdisProtocolHandle à une variable quelque part dans la zone de contexte allouée par l’appelant dans leurs appels à NdisOpenAdapter.

L’appelant utilise la valeur retournée dans SelectedMediumIndex dans les appels suivants à NdisRequest et/ou À NdisCoRequest. Les OID qu’il définit dans le paquet de requête dépendent du NdisMediumXxx retourné. Par exemple, si NdisMediumAtm est retourné dans SelectedMediumIndex, le pilote de protocole appelle NdisCoRequest lors de la spécification de OID_ATM_ codes XXX ou OID_CO_XXX , et NdisRequest lors de la spécification de codes OID_GEN_XXX .

Si NdisMediumWan est retourné dans SelectedMediumIndex, le pilote de protocole appelle NdisRequest en spécifiant OID_WAN_MEDIUM_SUBTYPE dans une requête pour déterminer le type de média WAN utilisé par le pilote sous-jacent.

Si une requête globale émise précédemment de OID_NETWORK_TYPE pour le support sans fil indique que le pilote et la carte réseau sous-jacente prennent en charge plusieurs supports de type NdisMediumWirelessWan, le protocole doit sélectionner l’un des supports pris en charge dès que NDIS a configuré la liaison et avant que le protocole sélectionne le format d’en-tête.

Pour plus d’informations sur les OID généraux et spécifiques aux moyennes que les pilotes de protocole utilisent pour négocier avec un pilote NDIS à liaison juste, consultez Identificateurs d’objet NDIS.

  • Plateforme cible : universelle
  • Version : non pris en charge pour les pilotes NDIS 6.0 dans Windows Vista. Utilisez NdisOpenAdapterExà la place. Pris en charge pour les pilotes NDIS 5.1 dans Windows Vista et Windows XP.

Configuration requise

Condition requise Valeur
En-tête ndis.h (inclure Ndis.h)
Bibliothèque Ndis.lib
IRQL PASSIVE_LEVEL

Voir aussi