Freigeben über


NdisFIndicateReceiveNetBufferLists-Funktion (ndis.h)

Ein Filtertreiber ruft NdisFIndicateReceiveNetBufferLists auf, um anzugeben, dass er Netzwerkdaten empfangen hat. Weitere Informationen finden Sie unter Empfangen von Daten in einem Filtertreiber.

Syntax

void NdisFIndicateReceiveNetBufferLists(
  [in] NDIS_HANDLE      NdisFilterHandle,
  [in] PNET_BUFFER_LIST NetBufferLists,
  [in] NDIS_PORT_NUMBER PortNumber,
  [in] ULONG            NumberOfNetBufferLists,
  [in] ULONG            ReceiveFlags
);

Parameter

[in] NdisFilterHandle

Das NDIS-Handle, das dieses Filtermodul identifiziert. NDIS hat das Handle in einem Aufruf der FilterAttach-Funktion an den Filtertreiber übergeben.

[in] NetBufferLists

Eine verknüpfte Liste von NET_BUFFER_LIST Strukturen. Jede NET_BUFFER_LIST-Struktur enthält eine NET_BUFFER-Struktur .

[in] PortNumber

Eine Portnummer, die einen Miniportadapterport angibt. Portnummern des Miniport-Adapters werden durch Aufrufen der NdisMAllocatePort-Funktion zugewiesen. Ein Nullwert gibt den Standardport eines Miniportadapters an.

[in] NumberOfNetBufferLists

Die Anzahl der NET_BUFFER_LIST Strukturen, die sich in der verknüpften Liste der Strukturen unter NetBufferLists befinden .

[in] ReceiveFlags

Flags, die Attribute für die Empfangsanzeige definieren. Die Flags können mit einem OR-Vorgang kombiniert werden. Um alle Flags zu löschen, legen Sie dieses Element auf 0 (null) fest. Diese Funktion unterstützt die folgenden Flags:

NDIS_RECEIVE_FLAGS_DISPATCH_LEVEL

Gibt an, dass die aktuelle IRQL DISPATCH_LEVEL ist. Weitere Informationen zu diesem Flag finden Sie unter Dispatch IRQL Tracking.For more information about this flag, see Dispatch IRQL Tracking.

NDIS_RECEIVE_FLAGS_RESOURCES

Gibt an, dass der Filtertreiber unmittelbar nach der Rückgabe des Aufrufs von NdisFIndicateReceiveNetBufferLists den Besitz der NET_BUFFER_LIST-Strukturen und aller angefügten NET_BUFFER-Strukturen zurückgibt.

NDIS_RECEIVE_FLAGS_SINGLE_ETHER_TYPE

Gibt an, dass alle NET_BUFFER_LIST-Strukturen in der Liste unter NetBufferLists über denselben Protokolltyp (EtherType) verfügen.

NDIS_RECEIVE_FLAGS_SINGLE_VLAN

Gibt an, dass alle NET_BUFFER_LIST-Strukturen in der Liste unter NetBufferLists zum gleichen VLAN gehören.

NDIS_RECEIVE_FLAGS_PERFECT_FILTERED

Gibt an, dass alle NET_BUFFER_LIST-Strukturen in der Liste unter NetBufferLists nur Daten enthalten, die mit dem Paketfilter und der Multicastadressenliste übereinstimmen, die dem Miniportadapter zugewiesen sind.

NDIS_RECEIVE_FLAGS_SINGLE_QUEUE

Gibt an, dass alle NET_BUFFER_LIST-Strukturen in der Liste unter NetBufferLists derselben VM-Warteschlange angehören. Ein Miniporttreiber muss dieses Flag für alle Empfangsanzeigen in einer Warteschlange festlegen, wenn das NDIS_RECEIVE_QUEUE_PARAMETERS_PER_QUEUE_RECEIVE_INDICATION-Flag im Flags-Element des NDIS_RECEIVE_QUEUE_PARAMETERS Struktur, wenn diese Warteschlange zugeordnet wurde.

NDIS_RECEIVE_FLAGS_SHARED_MEMORY_INFO_VALID

Gibt an, dass alle NET_BUFFER_LIST-Strukturen in der Liste unter NetBufferLists gültige freigegebene Speicherinformationen enthalten. Wenn dieses Flag für eine empfangene NET_BUFFER_LIST festgelegt ist, behandelt NDIS die Informationen des freigegebenen Speichers als gültig. Wenn dieses Flag nicht festgelegt ist, ignorieren NDIS und Treiber die Freigegebenen Speicherinformationen. Beispielsweise können Zwischentreiber, die Paketdaten ändern, dieses Flag verwenden, um zu bestimmen, ob Daten kopiert werden sollen. Miniporttreiber können das Flag verwenden, um zu bestimmen, wie der Speicher freigegeben werden soll, der einer VM-Warteschlange zugeordnet ist, wenn eine Warteschlange gelöscht wird.

NDIS_RECEIVE_FLAGS_MORE_NBLS

Reserviert.

NDIS_RECEIVE_FLAGS_SWITCH_SINGLE_SOURCE

Wenn dieses Flag festgelegt ist, stammen alle Pakete in einer verknüpften Liste von NET_BUFFER_LIST Strukturen vom gleichen erweiterbaren Hyper-V-Switch-Quellport.

Weitere Informationen finden Sie unter Hyper-V Extensible Switch Send and Receive Flags.For more information, see Hyper-V Extensible Switch Send and Receive Flags.

Hinweis Wenn jedes Paket in der verknüpften Liste der NET_BUFFER_LIST-Strukturen denselben Quellport verwendet, sollte die Erweiterung das NDIS_RETURN_FLAGS_SWITCH_SINGLE_SOURCE-Flag im ReturnFlags-Parameter von FilterReturnNetBufferLists festlegen, wenn die Empfangsanforderung abgeschlossen ist. Die Erweiterung muss dieses Flag im ReturnFlags-Parameter festlegen, wenn sie NdisFReturnNetBufferLists aufruft , um Pakete zurückzugeben, die sie nicht stammt oder geklont hat.
 

NDIS_RECEIVE_FLAGS_SWITCH_DESTINATION_GROUP

Wenn dieses Flag festgelegt ist, sollen alle Pakete in einer verknüpften Liste von NET_BUFFER_LIST Strukturen an den gleichen erweiterbaren Switchzielport weitergeleitet werden.

Weitere Informationen finden Sie unter Hyper-V Extensible Switch Send and Receive Flags.For more information, see Hyper-V Extensible Switch Send and Receive Flags.

Rückgabewert

Keine

Bemerkungen

Wenn ein Filtertreiber die NdisFIndicateReceiveNetBufferLists-Funktion aufruft , gibt er eine Liste mit NET_BUFFER_LIST Strukturen im NetBufferLists-Parameter an . NDIS übergibt die NET_BUFFER_LIST-Strukturen an die übergeordneten Treiber.

Filtertreiber können NdisFIndicateReceiveNetBufferLists aufrufen, um eine Empfangsanzeige zu erstellen.

Filtertreiber können auch Empfangsanzeigen filtern, die von zugrunde liegenden Treibern stammen. NDIS ruft die auf FilterReceiveNetBufferLists-Funktion zum Filtern solcher Empfangsanzeigen.

Ein Filtertreiber muss den SourceHandle-Member jeder NET_BUFFER_LIST Struktur, deren Ursprung er hat, auf denselben Wert wie der NdisFilterHandle-Parameter festlegen. Der Filtertreiber darf das SourceHandle-Element nicht in NET_BUFFER_LIST Strukturen ändern, von denen er nicht stammt.

Der Filtertreiber muss die NET_BUFFER_LIST-Strukturen , angefügten NET_BUFFER-Strukturen und alle angefügten MDLs ordnungsgemäß initialisieren.

Wenn ein Filtertreiber die NdisFIndicateReceiveNetBufferLists-Funktion aufruft und das flag NDIS_RECEIVE_FLAG_RESOURCES im ReceiveFlags-Parameter löscht, gibt NDIS die angegebenen NET_BUFFER_LIST Strukturen an den Filtertreiber zurück. FilterReturnNetBufferLists-Funktion . In diesem Fall darf der Filtertreiber die NET_BUFFER_LIST-Strukturen erst dann wieder freigeben, wenn NDIS die NET_BUFFER_LIST Strukturen an FilterReturnNetBufferLists zurückgibt.

Wenn ein Filtertreiber NdisFIndicateReceiveNetBufferLists aufruft und das NDIS_RECEIVE_FLAG_RESOURCES-Flag im ReceiveFlags-Parameter festlegt, gibt dies an, dass der Filtertreiber den Besitz der NET_BUFFER_LIST-Strukturen sofort wieder erlangen muss. In diesem Fall ruft NDIS die FilterReturnNetBufferLists-Funktion des Filtertreibers nicht auf, um die NET_BUFFER_LIST-Strukturen zurückzugeben. Stattdessen gibt NDIS die NET_BUFFER_LIST Strukturen an den Filtertreiber zurück, wenn sie von NdisFIndicateReceiveNetBufferLists zurückgegeben werden. Der Filtertreiber sollte die NET_BUFFER_LIST Strukturen unmittelbar nach der Rückgabe von NdisFIndicateReceiveNetBufferLists freigeben. Um die NET_BUFFER_LIST Strukturen wiederzugeben, kann ein Filtertreiber eine eigene FilterReturnNetBufferLists-Funktion aufrufen.

Das Festlegen des NDIS_RECEIVE_FLAG_RESOURCES-Flags im Parameter ReceiveFlags erzwingt, dass die übergehenden Treiber die Netzwerkdaten kopieren und die NET_BUFFER_LIST Strukturen an den Filtertreiber freigeben.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Unterstützt in NDIS 6.0 und höher.
Zielplattform Desktop
Kopfzeile ndis.h (include Ndis.h)
Bibliothek Ndis.lib
IRQL <= DISPATCH_LEVEL
DDI-Complianceregeln Irql_Filter_Driver_Function(ndis)

Weitere Informationen

FilterAttach

FilterReceiveNetBufferLists

FilterReturnNetBufferLists

NDIS_RECEIVE_QUEUE_PARAMETERS

NET_BUFFER

NET_BUFFER_LIST

NdisMAllocatePort

Empfangen von Daten in einem Filtertreiber