Handhabung von OID_PNP_Xxx-Abfragen und -Sets
Der virtuelle Miniport eines Intermediate-Treibers muss die Funktion MiniportOidRequest exportieren. NDIS ruft die Funktion MiniportOidRequest des Intermediate-Treibers auf, wenn ein übergeordneter Treiber, der an den virtuellen Miniport des Intermediate-Treibers gebunden ist, NdisOidRequest aufruft, um Informationsobjekte (OID_Xxx) abzufragen oder festzulegen. NDIS kann auch MiniportOidRequest in seinem eigenen Namen aufrufen. Weitere Informationen über die Handhabung von Sets und Queries von Informationsobjekten durch Miniport-Treiber finden Sie unter Erhalten und Festlegen von Miniport-Treiberinformationen und NDIS-Unterstützung für WMI.
Der Intermediate-Treiber sollte Informationen über die Funktionalitäten der zugrundeliegenden Miniport-Adapter aufbewahren, die er in der Funktion ProtocolBindAdapterEx erhält. Wenn der Miniport-Adapter nicht für die Energieverwaltung geeignet ist, legt NDIS das Mitglied PowerManagementCapabilities von NDIS_BIND_PARAMETERS auf NULL fest.
Der Intermediate-Treiber kann eine OID_Xxx abfragen oder festlegen, die vom zugrunde liegenden Miniport-Treiber verwaltet wird. Er tut dies mit NdisOidRequest(wenn der Intermediate-Treiber eine verbindungslose untere Begrenzung hat), oder mit NdisCoOidRequest(wenn der Intermediate-Treiber eine verbindungsorientierte untere Begrenzung hat).
Ein Intermediate-Treiber sollte Queries und Sets wie folgt handhaben:
-
Als Antwort auf diese OID-Abfrage müssen Intermediate-Treiber die PnP-Funktionalitäten der zugrunde liegenden physischen Miniport-Adapter melden. Beachten Sie, dass Miniport-Adapter für physische Geräte diese OID-Abfrage nicht erhalten.
Der Intermediate-Treiber erhält die PnP-Funktionalitäten der zugrunde liegenden Miniport-Adapter in den Bind-Parametern. Er sollte sie je nach Verwendungszweck des Intermediate-Treibers an die darüber liegenden Treiber weitergeben. Intermediate-Treiber und Miniport-Treiber melden die PnP-Funktionalitäten in den Attributen der Miniport-Adapter. Der Intermediate-Treiber stellt keine OID_PNP_CAPABILITIES-Anfragen an den zugrunde liegenden Miniport-Treiber. Wenn der zugrundeliegende Miniport-Adapter für die Energieverwaltung geeignet ist, muss der Intermediate-Treiber in der NDIS_PM_WAKE_UP_CAPABILITIES-Struktur in den virtuellen Miniport-Attributen für jede Wake-up-Funktionalität einen Stromversorgungszustand des Geräts von NdisDeviceStateUnspecified angeben:
- MinMagicPacketWakeUp
- MinPatternWakeUp
- MinLinkChangeWakeUp
Eine solche Einstellung zeigt an, dass der Intermediate-Treiber die Energieverwaltung kennt, aber das System nicht aufwecken kann.
OID_PNP_QUERY_POWER und OID_PNP_SET_POWER
Der Intermediate-Treiber muss immer NDIS_STATUS_SUCCESS auf eine Abfrage von OID_PNP_QUERY_POWER oder einen Satz von OID_PNP_SET_POWER zurückgeben. Der Intermediate-Treiber darf niemals eine dieser OID-Anfragen an den zugrunde liegenden Miniport-Treiber weiterleiten.
„Wake-up OIDs“
Wenn eine zugrundeliegende NIC für die Energieverwaltung geeignet ist, muss der Intermediate-Treiber dem zugrundeliegenden Miniport-Treiber (durch den Aufruf von NdisOidRequest oder NdisCoOidRequest) die folgenden OID_PNP_Xxx weitergeben, die sich auf Wake-up-Ereignisse beziehen:
Der Intermediate-Treiber muss auch die Antwort des zugrundeliegenden Miniport-Treibers auf diese OIDs an die darüber liegenden Protokolltreiber weiterleiten.
Wenn der zugrundeliegende Miniport-Adapter nicht für die Energieverwaltung geeignet ist, legt der Miniport-Treiber das PowerManagementCapabilities-Mitglied von NDIS_MINIPORT_ADAPTER_GENERAL_ATTRIBUTES auf NULL fest und NDIS setzt das PowerManagementCapabilities-Mitglied von NDIS_BIND_PARAMETERS auf NULL.
Wenn ein zugrundeliegender Miniport-Adapter nicht für die Energieverwaltung geeignet ist, sollte der Intermediate-Treiber als Antwort auf einen Query oder einen Set dieser OIDs NDIS_STATUS_NOT_SUPPORTED zurückgeben.