Hinzufügen und Löschen von Protokoll-Auslagerungen mit geringer Leistung
Um eine Protokollauslagerung mit geringer Leistung hinzuzufügen, stellen NDIS-Protokolltreiber eine OID-Satzanforderung von OID_PM_ADD_PROTOCOL_OFFLOAD aus. Das InformationBuffer-Element der NDIS_OID_REQUEST-Struktur enthält einen Zeiger auf eine NDIS_PM_PROTOCOL_OFFLOAD-Struktur .
Hinweis Wenn ein eingehendes Paket sowohl mit einem entladenen Protokoll als auch mit einem Muster übereinstimmt (z. B. aufgrund eines Konfigurationsfehlers), sollte der Netzwerkadapter auf das Paket reagieren und den Computer aktivieren.
Die NDIS_PM_PROTOCOL_OFFLOAD-Struktur enthält die folgenden Informationen:
Member | BESCHREIBUNG | ||||||||
---|---|---|---|---|---|---|---|---|---|
Priority |
Enthält die Priorität der Protokollauslagerung. Wenn ein überlagernder Treiber eine Protokollauslagerung mit höherer Priorität hinzufügt, wenn keine Ressourcen für weitere Protokollauslagerungen verfügbar sind, entfernt NDIS möglicherweise eine Protokollauslagerung mit niedrigerer Priorität, um Ressourcen freizugeben. Miniporttreiber sollten diesen Member ignorieren. Protokolltreiber können jeden Wert innerhalb des vordefinierten Bereichs von NDIS_PM_PROTOCOL_OFFLOAD_PRIORITY_LOWEST bis NDIS_PM_PROTOCOL_OFFLOAD_PRIORITY_HIGHEST bereitstellen. |
||||||||
ProtocolOffloadType |
Enthält einen NDIS_PM_PROTOCOL_OFFLOAD_TYPE-Wert , der den Typ der Protokollauslagerung angibt. |
||||||||
Friendlyname |
Enthält eine NDIS_PM_COUNTED_STRING-Struktur , die die benutzerlesbare Beschreibung der Protokollauslagerung mit geringer Leistung enthält. |
||||||||
ProtocolOffloadId |
Enthält einen von NDIS bereitgestellten Wert, der das entladene Protokoll identifiziert. Bevor NDIS die OID-Anforderung von OID_PM_ADD_PROTOCOL_OFFLOAD an die zugrunde liegenden NDIS-Treiber sendet oder die Anforderung an den überlagernden Treiber abschließt, legt NDIS ProtocolOffloadId auf einen Wert fest, der unter den Protokollauslagerungen eines Netzwerkadapters eindeutig ist. |
||||||||
NextProtocolOffloadOffset |
Enthält den Offset, den Anfang der OID-Anforderung InformationBuffer, zur nächsten NDIS_PM_PROTOCOL_OFFLOAD-Struktur in einer Liste für die OID_PM_PROTOCOL_OFFLOAD_LIST OID. Weitere Informationen zu OID_PM_PROTOCOL_OFFLOAD_LIST finden Sie unter Abrufen der aktuellen Parametereinstellungen von Protokollabladungen mit geringer Leistung. |
||||||||
ProtocolOffloadParameters |
Enthält eine der Strukturen IPv4ARPParameters, IPv6NSParameters oder Dot11RSNRekeyParameters in einer Union.
|
NDIS weist jedem entladenen Protokoll einen eindeutigen Bezeichner für einen Netzwerkadapter zu. Der Protokollauslagerungsbezeichner ist ein eindeutiger Wert für jedes Protokoll, das auf einem Netzwerkadapter abgeladen wird. Der Protokollauslagerungsbezeichner ist jedoch nicht global für alle Netzwerkadapter eindeutig. NDIS übergibt diesen Bezeichner an den zugrunde liegenden Miniporttreiber, wenn NDIS die OID_PM_ADD_PROTOCOL_OFFLOAD OID-Anforderung an den Miniporttreiber sendet. Wenn die Auslagerung des Protokolls erfolgreich ist, gibt NDIS den Bezeichner an den überlagernden Treiber zurück, der das Protokoll ausgeladen hat. Der überladene Treiber verwendet den Bezeichner, um ein zuvor entladenes Protokoll zu entfernen. Der Protokollauslagerungsbezeichner wird auch in status Hinweisen für die Treiber der oberen Schicht verwendet, wenn ein ausgeladenes Protokoll aus einem Netzwerkadapter entfernt wird.
Protokolltreiber müssen alle ausgeladenen Protokolle aus einem Netzwerkadapter entfernen, bevor die Bindung an diesen Netzwerkadapter geschlossen wird. Um eine Protokollabladung mit geringer Leistung zu entfernen, sendet ein Protokolltreiber eine OID-Set-Anforderung von OID_PM_REMOVE_PROTOCOL_OFFLOAD. Das InformationBuffer-Element der NDIS_OID_REQUEST-Struktur enthält einen Zeiger auf einen Protokollauslagerungsbezeichner.
NDIS ermöglicht es mehreren NDIS-Protokolltreibern, demselben Netzwerkadapter Protokollauslagerungen hinzuzufügen. Um sicherzustellen, dass der richtige Satz von Protokollen auf einen Netzwerkadapter entladen wurde, wenn die Anzahl der angeforderten ausgeladenen Protokolle höher ist als das, was ein Netzwerkadapter unterstützen kann, weisen Protokolltreiber jedem entladenen Protokoll eine Priorität zu. Wenn NDIS kein neues Protokoll mit hoher Priorität auslagern kann, weil der Netzwerkadapter keine Ressourcen mehr hat, löscht NDIS eines der protokolle mit niedrigerer Priorität ausgeladen (falls vorhanden) und versucht, das Protokoll mit hoher Priorität erneut zu entladen.
Hinweis Ein Miniporttreiber sollte eine Protokollabladungsanforderung mit geringem Stromverbrauch nicht ausführen und den STATUS_NDIS_PM_PROTOCOL_OFFLOAD_LIST_FULL status Code zurückgeben, damit NDIS die Protokollauslagerungen erneut priorisieren kann.
Wenn infolge der Auslagerung eines Protokolls mit hoher Priorität eines der ausgeladenen Protokolle mit niedrigerer Priorität gelöscht wird, sendet NDIS eine NDIS_STATUS_PM_OFFLOAD_REJECTED status Angabe, um den überlagernden Treiber zu benachrichtigen, der die Auslagerung des gelöschten Protokolls festgelegt hat. Das StatusBuffer-Element der NDIS_STATUS_INDICATION-Struktur enthält einen Protokollauslagerungsbezeichner der abgelehnten Protokollauslagerung. NDIS hat den Protokollauslagerungsbezeichner im ProtocolOffloadId-Member der NDIS_PM_PROTOCOL_OFFLOAD-Struktur bereitgestellt.