Bestimmen der VMQ-Funktionen eines Netzwerkadapters
NDIS stellt die Schnittstelle zum Bestimmen der VMQ-Funktionen eines Netzwerkadapters bereit, z. B.:
Die generischen Filterfunktionen eines Netzwerkadapters.
Unterstützte VM-Warteschlangenfunktionen.
Lookahead-Unterstützung, um die Aufteilung des Netzwerkdatenspeichers in zwei separate Puffer zu ermöglichen.
Hinweis Ab NDIS 6.30 wird das Aufteilen von Paketdaten in separate Lookaheadpuffer nicht mehr unterstützt.
Miniport-Treiber stellen NDIS während der Initialisierung des Netzwerkadapters die folgenden Informationen bereit:
Die VMQ-Hardwarefunktionen, die der Netzwerkadapter unterstützen kann.
Die VMQ-Funktionen, die derzeit aktiviert sind.
Die globalen Empfangsfilterfunktionen, die auf einem Netzwerkadapter aktiviert oder deaktiviert sind.
Überlastende Treiber und Anwendungen können die folgenden OID-Abfrageanforderungen verwenden, um die Netzwerkadapterfunktionen abzurufen.
OID_RECEIVE_FILTER_HARDWARE_CAPABILITIES
OID_RECEIVE_FILTER_CURRENT_CAPABILITIES
OID_RECEIVE_FILTER_GLOBAL_PARAMETERS
NDIS verarbeitet diese OID-Abfrageanforderungen für Miniporttreiber. Daher wird die Abfrage für Miniporttreiber nicht angefordert. NDIS meldet die derzeit aktivierten EMPFANGS-VMQ-Funktionen eines Netzwerkadapters während der Initialisierung. Daher müssen überlastende Treiber diese OIDs nicht abfragen.
Die NDIS_RECEIVE_FILTER_CAPABILITIES-Struktur gibt die Filterfunktionen eines Netzwerkadapters an. Diese Struktur wird auf folgende Weise verwendet:
Wenn NDIS die MiniportInitializeEx-Funktion aufruft, registriert der Miniporttreiber seine Filterfunktionen, indem er eine NDIS_RECEIVE_FILTER_CAPABILITIES-Struktur initialisiert. Der Treiber legt dann den HardwareReceiveFilterCapabilities-Member der NDIS_MINIPORT_ADAPTER_HARDWARE_ASSIST_ATTRIBUTES-Struktur so fest, dass er auf die NDIS_RECEIVE_FILTER_CAPABILITIES-Struktur verweist. Der Treiber ruft als Nächstes die NdisMSetMiniportAttributes-Funktion auf und legt dann den MiniportAttributes-Parameter auf einen Zeiger auf die NDIS_MINIPORT_ADAPTER_HARDWARE_ASSIST_ATTRIBUTES-Struktur fest.
Ein übersteigender Protokolltreiber empfängt die NDIS_RECEIVE_FILTER_CAPABILITIES-Struktur in der NDIS_BIND_PARAMETERS-Struktur , wenn NDIS die ProtocolBindAdapterEx-Funktion des Treibers aufruft.
Ein übersteigender Filtertreiber empfängt die NDIS_RECEIVE_FILTER_CAPABILITIES-Struktur in der NDIS_FILTER_ATTACH_PARAMETERS-Struktur , wenn NDIS die FilterAttach-Funktion des Treibers aufruft.
Übergeordnete Treiber erhalten die NDIS_MINIPORT_ADAPTER_HARDWARE_ASSIST_ATTRIBUTES-Struktur , indem sie eine OID-Abfrageanforderung von OID_RECEIVE_FILTER_CURRENT_CAPABILITIES oder OID_RECEIVE_FILTER_HARDWARE_CAPABILITIES ausgeben. Die Elemente HardwareReceiveFilterCapabilities und CurrentReceiveFilterCapabilities zeigen auf eine NDIS_RECEIVE_FILTER_CAPABILITIES-Struktur .
Die NDIS_RECEIVE_FILTER_CAPABILITIES-Struktur enthält die folgenden Informationen:
EnabledFilterTypes
Die Typen der unterstützten Empfangsfilter. Das flag NDIS_RECEIVE_FILTER_VMQ_FILTERS_ENABLED gibt an, dass VMQ-Filter (VMQ) aktiviert sind.
EnabledQueueTypes
Die Typen der unterstützten Empfangswarteschlangen. Das flag NDIS_RECEIVE_FILTER_VM_QUEUES_ENABLED gibt an, dass VM-Warteschlangen (VM) aktiviert sind.
NumQueues
Die Anzahl der Empfangswarteschlangen, die der Netzwerkadapter unterstützt. Um VMQ zu unterstützen, muss diese Zahl gleich oder kleiner als die Anzahl der Unicast-MAC-Adressen sein, die von der NIC unterstützt werden. Diese Nummer darf nicht die Standardwarteschlange enthalten.
Hinweis Die Anzahl der Unicast-MAC-Adressen oder VM-Warteschlangen, die von einem Netzwerkadapter unterstützt werden, enthält nicht die MAC-Adresse der zugeordneten NIC.
SupportedQueueProperties
Die Warteschlangeneigenschaften, die der Netzwerkadapter unterstützt. Das flag NDIS_RECEIVE_FILTER_VM_QUEUE_SUPPORTED gibt an, dass der Netzwerkadapter die Mindestanforderungen zur Unterstützung der VMQ-Filterung bereitstellt. Eine VMQ-fähige NIC muss einen MSI-X-Tabelleneintrag für jede Empfangswarteschlange bereitstellen. Daher muss ein VMQ-Miniporttreiber das flag NDIS_RECEIVE_FILTER_MSI_X_SUPPORTED festlegen.
SupportedFilterTests
Die Filtertestvorgänge, die von einem Miniporttreiber unterstützt werden. Der Netzwerkadapter unterstützt beispielsweise das Testen des ausgewählten Headerfelds, um zu bestimmen, ob es einem bestimmten Wert entspricht. Ein VMQ-Miniporttreiber muss das flag NDIS_RECEIVE_FILTER_TEST_HEADER_FIELD_EQUAL_SUPPORTED festlegen.
SupportedHeaders
Die Typen von Netzwerkpaketheadern, die ein Miniporttreiber überprüfen kann. Der Netzwerkadapter kann beispielsweise den MAC-Header eines Netzwerkpakets überprüfen. Der MAC-Header enthält den Pakettyp, die Ziel- und Quell-MAC-Adressen, den VLAN-Bezeichner und die Prioritätstagfelder. Ein VMQ-Miniporttreiber muss das NDIS_RECEIVE_FILTER_MAC_HEADER_SUPPORTED-Flag festlegen.
SupportedMacHeaderFields
Die Typen von MAC-Headerfeldern, die ein Miniporttreiber überprüfen kann. Ein VMQ-Miniporttreiber muss das NDIS_RECEIVE_FILTER_MAC_HEADER_DEST_ADDR_SUPPORTED-Flag festlegen.
MaxMacHeaderFilters
Die maximale Anzahl von MAC-Headerfiltern, die der Miniporttreiber unterstützt. Es sollten mindestens so viele Headerfilter vorhanden sein, wie VM-Warteschlangen vorhanden sind.
MaxQueueGroups
Dieser Member ist für NDIS reserviert.
MaxQueuesPerQueueGroup
Dieser Member ist für NDIS reserviert.
MinLookaheadSplitSize
Die Mindestgröße in Bytes, die der Netzwerkadapter für Lookahead-Paketsegmente unterstützt.
Hinweis Ab NDIS 6.30 wird das Aufteilen von Paketdaten in separate Lookaheadpuffer nicht mehr unterstützt. Miniport-Treiber, die NDIS 6.30 oder höhere Versionen unterstützen, müssen diesen Member auf Null festlegen.
MaxLookaheadSplitSize
Die maximale Größe in Bytes, die der Netzwerkadapter für Lookahead-Paketsegmente unterstützt.
Hinweis Ab NDIS 6.30 wird das Aufteilen von Paketdaten in separate Lookaheadpuffer nicht mehr unterstützt. Miniport-Treiber, die NDIS 6.30 oder höhere Versionen unterstützen, müssen diesen Member auf Null festlegen.
Nach einer erfolgreichen Rückgabe der OID_RECEIVE_FILTER_HARDWARE_CAPABILITIES OID-Abfrage enthält der InformationBuffer-Member der NDIS_OID_REQUEST-Struktur einen Zeiger auf eine NDIS_RECEIVE_FILTER_CAPABILITIES-Struktur. Diese Funktionen können VMQ-Hardwarefunktionen umfassen, die derzeit durch INF-Dateieinstellungen oder über die Seite Erweiterte Eigenschaften deaktiviert sind. Weitere Informationen zu VMQ INF-Dateieinstellungen finden Sie unter VMQ Standard INF-Einträge.
NDIS-Miniporttreiber stellen die Empfangsfilterhardwarefunktionen während der Initialisierung im HardwareReceiveFilterCapabilities-Member der NDIS_MINIPORT_ADAPTER_HARDWARE_ASSIST_ATTRIBUTES-Struktur bereit.
Nach einer erfolgreichen Rückgabe der OID_RECEIVE_FILTER_CURRENT_CAPABILITIES OID-Abfrage enthält der InformationBuffer-Member der NDIS_OID_REQUEST-Struktur einen Zeiger auf eine NDIS_RECEIVE_FILTER_CAPABILITIES-Struktur . Zu diesen Funktionen gehören die derzeit aktivierten VMQ-Funktionen.
NDIS-Miniporttreiber stellen die derzeit aktivierten Empfangsfilterfunktionen während der Initialisierung im CurrentReceiveFilterCapabilities-Member der NDIS_MINIPORT_ADAPTER_HARDWARE_ASSIST_ATTRIBUTES-Struktur bereit.
NDIS meldet die derzeit aktivierten Empfangsfilterfunktionen eines zugrunde liegenden Netzwerkadapters, um während des Bindungsvorgangs die Protokolltreiber im ReceiveFilterCapabilities-Member der NDIS_BIND_PARAMETERS-Struktur zu übersteigen.
Die NDIS_RECEIVE_FILTER_GLOBAL_PARAMETERS-Struktur wird in der OID_RECEIVE_FILTER_GLOBAL_PARAMETERS Abfrage-OID verwendet, um die aktuellen einstellungen des globalen Empfangsfilters abzurufen.
NDIS_RECEIVE_FILTER_GLOBAL_PARAMETERS enthält die folgenden Informationen:
EnabledFilterTypes
Die Typen der aktivierten Empfangsfilter. Das flag NDIS_RECEIVE_FILTER_VMQ_FILTERS_ENABLED gibt an, dass VMQ-Filter (VMQ) aktiviert sind.
EnabledQueueTypes
Die Typen der aktivierten Empfangswarteschlangen. Das flag NDIS_RECEIVE_FILTER_VM_QUEUES_ENABLED gibt an, dass VM-Warteschlangen (VM) aktiviert sind.
Nach einer erfolgreichen Rückgabe der OID_RECEIVE_FILTER_GLOBAL_PARAMETERS OID-Abfrage enthält der InformationBuffer-Member der NDIS_OID_REQUEST-Struktur einen Zeiger auf eine NDIS_RECEIVE_FILTER_GLOBAL_PARAMETERS-Struktur . Die NDIS_RECEIVE_FILTER_GLOBAL_PARAMETERS-Struktur gibt die Funktionen für die Empfangsfilterung an, die auf einem Netzwerkadapter aktiviert oder deaktiviert sind.
NDIS-Protokolltreiber verwenden OID_RECEIVE_FILTER_GLOBAL_PARAMETERS, um die aktuellen globalen Konfigurationsparameter für die Empfangsfilterung auf einem Netzwerkadapter abzufragen. Beispielsweise können Protokolltreiber diese OID verwenden, um zu bestimmen, ob Die Typen von Empfangsfiltern oder Empfangswarteschlangen aktiviert oder deaktiviert sind.