Freigeben über


Aktivieren eines NDIS-Ports

Nachdem ein Miniporttreiber erfolgreich einen NDIS-Port zugeordnet hat, und bevor die Portnummer in NDIS-Funktionen verwendet wird, muss der Treiber den Port aktivieren. Um den Port zu aktivieren, sendet der Miniporttreiber ein PnP-Ereignis (Port Activation Plug & Play) an NDIS. Um das PnP-Ereignis für die Portaktivierung zu senden, verwenden Miniporttreiber den PnP-Ereigniscode NetEventPortActivation im Aufruf der NdisMNetPnPEvent-Funktion .

Um Ports zu aktivieren, muss der Miniporttreiber die Member der NET_PNP_EVENT_NOTIFICATION-Struktur festlegen, auf die der NetPnPEvent-Parameter von NdisMNetPnPEvent wie folgt verweist:

Portnumber
Der Quellport der Ereignisbenachrichtigung. Legen Sie diesen Member auf 0 fest, da die Portnummern im Pufferelement der Struktur bereitgestellt werden, die vom NetPnPEvent-Member angegeben wird.

NetPnPEvent
Eine NET_PNP_EVENT-Struktur , die das Portaktivierungsereignis beschreibt. Legen Sie die Member dieser Struktur wie folgt fest:

NetEvent
Ein Ereigniscode, der das Ereignis beschreibt. Legen Sie dieses Element auf NetEventPortActivation fest.

Puffer
Ein Zeiger auf eine verknüpfte Liste von NDIS_PORT Strukturen. Das Nächste Element der NDIS_PORT-Strukturen verweist auf die nächste NDIS_PORT-Struktur in der Liste.

BufferLength
Die Anzahl der Bytes, die in Buffer angegeben werden. Legen Sie BufferLength auf die Größe der NDIS_PORT-Strukturen fest.

Andere Mitglieder
Legen Sie die verbleibenden Member von NET_PNP_EVENT auf NULL fest.

Der Miniporttreiber listet in einer verknüpften Liste von NDIS_PORT Strukturen die Ports auf, die den Status von inaktiv in aktiv geändert haben. Wenn jedoch der Standardport eines Miniportadapters das Ziel eines NetEventPortActivation-PnP-Ereignisses ist, muss der Standardport der einzige Port in der Liste sein.

Wenn der Miniporttreiber NDIS über die Aktivierung eines Ports benachrichtigt (und möglicherweise bevor dieser Benachrichtigungsaufruf zurückgegeben wird), muss der Miniporttreiber bereit sein, Sendeanforderungen und OID-Anforderungen zu verarbeiten, die dem Port zugeordnet sind. Miniport-Treiber dürfen erst nach dem Aufruf von NdisMNetPEvent die Portnummer eines neu aktivierten Ports in status verwenden oder Anzeigen empfangen.

NDIS benachrichtigt überlastende Treiber erst über aktivierte Ports, wenn der Standardport aktiv ist. Wenn NDIS die ProtocolBindAdapterEx-Funktion eines Protokolltreibers aufruft, stellt NDIS eine Liste aller derzeit aktiven Ports im ActivePorts-Member der NDIS_BIND_PARAMETERS Struktur bereit, auf die der BindParameters-Parameter verweist. Wenn ein Miniporttreiber neue Ports aktiviert, benachrichtigt NDIS alle Protokolltreiber, die mit dem NetEventPortActivation-PnP-Ereignis an den Miniporttreiber gebunden sind. Weitere Informationen zum Behandeln dieser Portaktivierungsereignisse in einem Protokolltreiber finden Sie unter Behandeln des PnP-Ereignisses für die Portaktivierung.

Bevor ein Miniporttreiber einen NDIS-Port zuordnet, muss der Treiber die Funktion NdisMSetMiniportAttributes aufrufen, um die Registrierungsattribute in der NDIS_MINIPORT_ADAPTER_REGISTRATION_ATTRIBUTES-Struktur festzulegen. Miniport-Treiber können die Aktivierung des Standardports steuern, indem sie das attributflag NDIS_MINIPORT_CONTROLS_DEFAULT_PORT festlegen, wenn sie NdisMSetMiniportAttributes aufrufen. Wenn ein Miniporttreiber die Verantwortung für die Aktivierung des Standardports übernimmt, initiiert NDIS die Bindung zwischen dem Miniportadapter und den überlappenden Treibern erst, wenn der Miniporttreiber den Standardport mit dem PnP-Ereignis für die Portaktivierung aktiviert.

Alle Ports, die in der verknüpften Liste der NDIS_PORT-Strukturen angegeben werden, müssen sich im zugeordneten Zustand befinden. Ein Miniporttreiber sollte nicht versuchen, einen bereits aktiven Port zu aktivieren. Wenn der Treiber versucht, einen aktiven Port zu aktivieren, behandelt NDIS die Situation als Portaktivierungsfehler.

Wenn NDIS keine Ports in der Liste aktiviert, schlägt der Aufruf von NdisMNetPEvent fehl, und keiner der Ports in der Liste ändert den Status in den aktivierten Zustand. Wenn NDIS die Ports nicht aktivieren kann, weil einige ports nicht vorhanden sind, gibt NdisMNetPnPEvent einen NDIS_STATUS_INVALID_PORT Rückgabewert zurück. Wenn NDIS die Ports nicht aktivieren kann, weil sich einige ports nicht im zugeordneten Zustand befinden, gibt NdisMNetPnPEvent einen NDIS_STATUS_INVALID_PORT_STATE Rückgabewert zurück.

Nachdem ein Port erfolgreich aktiviert wurde, befindet sich der Port im aktivierten Zustand. Miniporttreiber können empfangene Daten und status für einen Port im aktivierten Zustand angeben.

NDIS übergibt den Authentifizierungsstatus des Standardports an die MiniportInitializeEx-Funktion im DefaultPortAuthStates-Element der NDIS_MINIPORT_INIT_PARAMETERS-Struktur . Wenn ein Miniporttreiber den Standardport steuert und der Miniporttreiber den Standardport aktiviert, kann er den Standardport mithilfe der Standardauthentifizierungseinstellungen aktivieren. Um die Standardauthentifizierungseinstellungen zu verwenden, legen Sie das flag NDIS_PORT_CHAR_USE_DEFAULT_AUTH_SETTINGS im Flags-ElementNDIS_PORT_CHARACTERISTICS-Struktur fest. Miniporttreiber können das NDIS_PORT_CHAR_USE_DEFAULT_AUTH_SETTINGS-Flag für die Ports verwenden, die sie zuweisen und aktivieren. Für den Aktivierungsfall weist NDIS dem neu aktivierten Port die Standardauthentifizierungszustände zu und ignoriert die Authentifizierungszustände, die für das NetEventPortActivation-Ereignis an NdisMNetPnPEvent übergeben werden.

Weitere Informationen zum Steuern des Standardports und zum Zuweisen von Ports finden Sie unter Zuweisen von NDIS-Ports.