Freigeben über


NdisOpenAdapter-Funktion (ndis.h)

Hinweis NDIS 5. x wurde veraltet und wird von NDIS 6 abgelöst. x. Informationen zur Entwicklung neuer NDIS-Treiber finden Sie unter Netzwerktreiber ab Windows Vista. Informationen zum Portieren von NDIS 5. x-Treiber auf NDIS 6. x, siehe Portieren von NDIS 5.x-Treibern zu NDIS 6.0.

NdisOpenAdapter richtet eine Bindung zwischen dem aufrufenden Protokoll und einem bestimmten zugrunde liegenden NIC-Treiber oder NDIS-Zwischentreiber ein.

Syntax

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
);

Parameter

[out] Status

Zeiger auf eine vom Aufrufer bereitgestellte Variable, die bei der Rückgabe von dieser Funktion einer der folgenden Werte sein kann:

  • STATUS_SUCCESS
    Die angeforderte Bindung ist jetzt eingerichtet, damit der Aufrufer die werte verwenden kann, die bei NdisBindingHandle und SelectedMediumIndex in nachfolgenden Aufrufen von NdisXxx zurückgegeben werden.

  • NDIS_STATUS_PENDING
    Der angeforderte Vorgang wird asynchron verarbeitet, und die ProtocolOpenAdapterComplete-Funktion des Aufrufers wird aufgerufen, wenn das Öffnen abgeschlossen ist.

  • NDIS_STATUS_RESOURCES
    Der angeforderte Vorgang ist fehlgeschlagen, weil NDIS nicht genügend Arbeitsspeicher zuweisen oder den Zustand initialisieren konnte, der zum Nachverfolgen einer offenen Bindung verwendet wird.

  • NDIS_STATUS_ADAPTER_NOT_FOUND
    Der angeforderte Vorgang ist fehlgeschlagen, da der Name unter AdapterName im Systemobjektnamespace nicht gefunden wurde.

  • NDIS_STATUS_UNSUPPORTED_MEDIA
    Das Array bei MediumArray hat kein Medium angegeben, das von NDIS oder vom zugrunde liegenden Treiber unterstützt wird.

  • NDIS_STATUS_CLOSING
    Entweder der Aufrufer oder das unter AdapterName angegebene physische oder virtuelle Gerät wird geschlossen.

  • NDIS_STATUS_OPEN_FAILED
    Der offene Versuch ist aus keinem der oben genannten spezifischen Gründe fehlgeschlagen. Beispielsweise konnte NDIS möglicherweise das Filterpaket für das ausgewählte Medium nicht initialisieren.

[out] OpenErrorStatus

Zeiger auf eine vom Aufrufer bereitgestellte Variable, die einen NDIS_STATUS_XXX-Fehler enthalten kann, der weitere Informationen bereitstellt, wenn NdisOpenAdapter einen Fehler bei Status zurückgibt. Beispielsweise kann der Treiber einer Tokenring-NIC einen Ringfehler in dieser Variablen zurückgeben.

[out] NdisBindingHandle

Zeiger auf eine vom Aufrufer bereitgestellte Variable, in der NDIS ein Handle zurückgibt, das eine erfolgreiche Bindung zwischen dem Aufrufer und der angegebenen physischen oder virtuellen NIC darstellt, die unter AdapterName angegeben ist.

[out] SelectedMediumIndex

Zeiger auf eine vom Aufrufer bereitgestellte Variable, in der NDIS den Index des Arrayelements zurückgibt, das den Vom zugrunde liegenden NDIS-Treiber verwendeten Medientyp angibt.

[in] MediumArray

Zeiger auf ein Array von NDIS_MEDIUM-Typwerten, die die Medientypen angeben, die der Aufrufer unterstützen kann. Mögliche Elemente sind eine geeignete Teilmenge der folgenden Elemente:

  • NdisMedium802_3
    Gibt ein Ethernet-Netzwerk (802.3) an.

  • NdisMedium802_5
    Gibt ein Token ring -Netzwerk (802.5) an.

  • NdisMediumFddi
    Gibt ein FDDI-Netzwerk (Fiber Distributed Data Interface) an.

  • NdisMediumWan
    Gibt ein Wide Area Network an. Dieser Typ deckt verschiedene Formen von Punkt-zu-Punkt- und WAN-NICs sowie variantenbasierte Adress-/Headerformate ab, die nach dem Herstellen der Bindung zwischen dem Protokolltreiber und dem zugrunde liegenden Treiber ausgehandelt werden müssen.

  • NdisMediumLocalTalk
    Gibt ein LocalTalk-Netzwerk an.

  • NdisMediumDix
    Gibt ein Ethernet-Netzwerk an, für das die Treiber das DIX-Ethernet-Headerformat verwenden.

  • NdisMediumArcnetRaw
    Gibt ein ARCNET-Netzwerk an.

  • NdisMediumArcnet878_2
    Gibt ein ARCNET-Netzwerk (878.2) an.

  • NdisMediumAtm
    Gibt ein ATM-Netzwerk an. Verbindungsorientierte Clientprotokolle können sich an einen zugrunde liegenden Miniporttreiber binden, der diesen Wert zurückgibt. Andernfalls binden sich Ältere Protokolle an den vom System bereitgestellten LanE-Zwischentreiber, der den mittleren Typ entweder als NdisMedium802_3 oder NdisMedium802_5 meldet, je nachdem, wie der LanE-Treiber vom Netzwerkadministrator konfiguriert wird.

  • NdisMediumWirelessWan
    Gibt ein drahtloses Netzwerk an. NDIS 5.X-Miniporttreiber, die WLAN- oder WWAN-Pakete (Wireless WAN) unterstützen, deklarieren ihr Medium als NdisMedium802_3 und emulieren Ethernet für übergeordnete NDIS-Treiber.

    Hinweis Dieser Medientyp steht ab Windows Vista nicht mehr zur Verfügung.

  • NdisMediumIrda
    Gibt ein Infrarotnetzwerk (IrDA) an.

  • NdisMediumCoWan
    Gibt ein Wide Area Network in einer verbindungsorientierten Umgebung an.

  • NdisMedium1394
    Gibt ein IEEE 1394-Netzwerk (Fire Wire) an.

[in] MediumArraySize

Gibt die Anzahl der Elemente bei MediumArray an.

[in] NdisProtocolHandle

Gibt das von NdisRegisterProtocol zurückgegebene Handle an.

[in] ProtocolBindingContext

Gibt das Handle für einen vom Aufrufer bereitgestellten residenten Kontextbereich an, in dem das Protokoll den Zustand dieser Bindung verwaltet, nachdem sie eingerichtet wurde.

[in] AdapterName

Zeiger auf einen NDIS_STRING Typ mit einer gezählten Zeichenfolge, die im Standardzeichensatz des Systems angegeben ist und die NIC oder den virtuellen Adapter eines zugrunde liegenden NDIS-Treibers benennt. Dieser Treiber exportiert eine Reihe von Funktionen für den oberen Rand ( MiniportXxx). Bei Treibern unter Windows 2000 und höher enthält diese gezählte Zeichenfolge Unicode-Zeichen. Das heißt, für Windows 2000 und höher definiert NDIS den NDIS_STRING-Typ als UNICODE_STRING Typ.

[in] OpenOptions

Gibt eine Bitmaske an, die Flags enthält, die der Aufrufer an den nächstniedrigen Treiber übergibt, wobei angenommen wird, dass es sich um einen NIC-Treiber handeln soll. Derzeit ist dieser Parameter für die Systemverwendung reserviert.

[in, optional] AddressingInformation

Zeiger auf eine optionale Zeichenfolge mit variabler Länge, die spezifische Informationen für die zugrunde liegende NIC enthält, die der NIC-Treiber zum Programmieren der Netcard verwenden kann. Dieser Zeiger kann NULL sein.

Wenn sie angegeben wird, müssen die Adressierungsinformationen gültig bleiben, bis der geöffnete Vorgang abgeschlossen ist. Ein zugrunde liegender NIC-Treiber, der ein asynchrones Modem unterstützt, kann diese Informationen für Wählvorgänge verwenden.

Rückgabewert

Keine

Bemerkungen

Ein Protokolltreiber ruft NdisOpenAdapter über seine ProtocolBindAdapter-Funktion auf. NDIS unterstützt das Aufrufen von NdisOpenAdapter nicht mehr über die DriverEntry-Funktion , die für Legacyprotokolle (V3.0) verfügbar war. NDIS unterstützt keine V3.0-Protokolle mehr. NDIS schlägt bei jedem Versuch fehl, NdisOpenAdapter außerhalb des Kontexts von ProtocolBindAdapter aufzurufen.

Die Zeichenfolge unter AdapterName bleibt nur gültig, bis NdisOpenAdapter die Steuerung zurückgibt, auch wenn NDIS_STATUS_PENDING unter Status zurückgegeben wird.

Die Variablen bei NdisBindingHandle und SelectedMediumIndex sollten ignoriert werden, bis die ProtocolOpenAdapterComplete-Funktion aufgerufen wird, wenn NdisOpenAdapter NDIS_STATUS_PENDING zurückgibt. Da diese Variablen bis zum Aufruf von ProtocolOpenAdapterComplete ungültig bleiben können, können sie sich nicht im Stapel befinden. Normalerweise befinden sich diese Variablen im Bereich ProtocolBindingContext , da dieses Handle ein Eingabeparameter für ProtocolOpenAdapterComplete ist.

Ein Protokolltreiber sollte das bei NdisProtocolHandle zurückgegebene Handle beibehalten. Dies ist ein erforderlicher Parameter für andere NdisXxx-Funktionen , die der Treiber anschließend aufruft. Der angegebene ProtocolBindingContext ist ein Eingabeparameter für die ProtocolXxx-Funktionen des Aufrufers, sodass Protokolle in der Regel einen NdisProtocolHandle-Zeiger an eine Variable irgendwo im vom Aufrufer zugeordneten Kontextbereich in ihren Aufrufen von NdisOpenAdapter übergeben.

Der Aufrufer verwendet den wert, der bei SelectedMediumIndex in nachfolgenden Aufrufen von NdisRequest und/oder NdisCoRequest zurückgegeben wird. Welche OIDs im Anforderungspaket festgelegt werden, hängt vom zurückgegebenen NdisMediumXxx ab. Wenn beispielsweise NdisMediumAtm bei SelectedMediumIndex zurückgegeben wird, ruft der Protokolltreiber NdisCoRequest auf, wenn OID_ATM_ XXX - oder OID_CO_XXX-Codes angegeben wird, und NdisRequest , wenn OID_GEN_XXX-Codes angegeben werden.

Wenn NdisMediumWan bei SelectedMediumIndex zurückgegeben wird, ruft der Protokolltreiber NdisRequest auf und gibt OID_WAN_MEDIUM_SUBTYPE in einer Abfrage an, um zu bestimmen, welche WAN-Medientypen der zugrunde liegende Treiber verwendet.

Wenn eine zuvor ausgestellte globale Abfrage von OID_NETWORK_TYPE für drahtlose Medien angibt, dass der Treiber und die zugrunde liegende NIC mehr als ein Medium vom Typ NdisMediumWirelessWan unterstützen, muss das Protokoll eines der unterstützten Medien auswählen, sobald NDIS die Bindung eingerichtet hat und bevor das Protokoll das Headerformat auswählt.

Weitere Informationen zu den allgemeinen und mittelspezifischen OIDs, die Protokolltreiber zum Aushandeln mit einem just-gebundenen NDIS-Treiber verwenden, finden Sie unter NDIS-Objektbezeichner.

  • Zielplattform: Universell
  • Version: Nicht unterstützt für NDIS 6.0-Treiber in Windows Vista. Verwenden Sie stattdessen NdisOpenAdapterEx. Unterstützt für NDIS 5.1-Treiber in Windows Vista und Windows XP.

Anforderungen

Anforderung Wert
Header ndis.h (einschließlich Ndis.h)
Bibliothek Ndis.lib
IRQL PASSIVE_LEVEL

Weitere Informationen