Freigeben über


NdisSendNetBufferLists-Funktion (ndis.h)

Protokolltreiber rufen die NdisSendNetBufferLists Funktion auf, um Netzwerkdaten zu senden, die in einer Liste von NET_BUFFER_LIST Strukturen enthalten sind.

Syntax

void NdisSendNetBufferLists(
  [in] NDIS_HANDLE                       NdisBindingHandle,
  [in] __drv_aliasesMem PNET_BUFFER_LIST NetBufferLists,
  [in] NDIS_PORT_NUMBER                  PortNumber,
  [in] ULONG                             SendFlags
);

Parameter

[in] NdisBindingHandle

Ein Handle, das den Zieladapter identifiziert. Ein vorheriger Aufruf von NdisOpenAdapterEx dieses Handle zurückgegeben.

[in] NetBufferLists

Ein Zeiger auf eine verknüpfte Liste von NET_BUFFER_LIST Strukturen. Jede NET_BUFFER_LIST Struktur beschreibt eine Liste der NET_BUFFER Strukturen.

[in] PortNumber

Eine Portnummer, die einen Miniportadapteranschluss identifiziert. Die Standardportnummer eines Miniportadapters ist Null. Protokolltreiber, die keine Miniportadapterports verwenden, sollten den Standardport angeben.

[in] SendFlags

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

NDIS_SEND_FLAGS_DISPATCH_LEVEL

Gibt an, dass die aktuelle IRQL DISPATCH_LEVEL ist. Weitere Informationen zu diesem Kennzeichen finden Sie unter IRQL Tracking.

NDIS_SEND_FLAGS_CHECK_FOR_LOOPBACK

Gibt an, dass NDIS auf Loopback überprüfen soll. Standardmäßig werden von NDIS keine Daten in einer Schleife an den Treiber übergeben, der die Sendeanforderung übermittelt hat. Ein übermäßiger Treiber kann dieses Verhalten überschreiben, indem dieses Kennzeichen festgelegt wird. Wenn dieses Kennzeichen festgelegt ist, identifiziert NDIS alle NET_BUFFER Strukturen, die Daten enthalten, die den Empfangskriterien für die Bindung entsprechen. NDIS gibt NET_BUFFER Strukturen an, die den Kriterien des übermäßigen Treibers entsprechen. Dieses Kennzeichen hat keine Auswirkungen auf die Überprüfung auf Loopback oder Schleife zurück auf andere Bindungen.

Rückgabewert

Nichts

Bemerkungen

Nachdem ein Protokolltreiber NdisSendNetBufferListsaufgerufen hat, übermittelt NDIS die NET_BUFFER_LIST Strukturen an die zugrunde liegenden Treiber MiniportSendNetBufferLists Funktion.

Der Protokolltreiber muss jede NET_BUFFER_LIST Struktur aus einem Pool zuordnen, indem eine der folgenden Funktionen aufgerufen wird:

Der Protokolltreiber kann z. B. NET_BUFFER_LIST Strukturen präallocatieren – z. B. in seiner DriverEntry- Routine. Alternativ kann der Treiber die Strukturen direkt vor dem Aufrufen von NdisSendNetBufferLists zuordnen und diese dann freigeben, wenn der Sendevorgang abgeschlossen ist. Wenn NDIS eine NET_BUFFER_LIST Struktur zurückgibt ProtocolSendNetBufferListsCompletekann der Miniporttreiber die NET_BUFFER_LIST Struktur und alle zugehörigen Ressourcen für die Wiederverwendung vorbereiten. Durch die Wiederverwendung der NET_BUFFER_LIST Strukturen kann eine bessere Leistung erzielt werden, als die Strukturen in einen Pool zurückzugeben und diese dann für einen anderen Sendevorgang neu zuzuordnen.

Ein Protokolltreiber muss das SourceHandle Member jeder NET_BUFFER_LIST Struktur auf denselben Wert festlegen, den er an den NdisBindingHandle Parameter übergibt. Das Bindungshandle stellt die Informationen bereit, die NDIS benötigt, um die NET_BUFFER_LIST Struktur nach aufrufen des zugrunde liegenden Miniporttreibers an den Protokolltreiber zurückzugeben. NdisMSendNetBufferListsComplete.

Vor dem Aufrufen NdisSendNetBufferListskann ein Protokolltreiber Informationen festlegen, die die Sendeanforderung mit dem NET_BUFFER_LIST_INFO-Makro begleiten. Der zugrunde liegende Treiber kann diese Informationen mit dem NET_BUFFER_LIST_INFO Makro abrufen.

Bevor ein Protokolltreiber NdisSendNetBufferLists mit einer Liste von NET_BUFFER_LIST Strukturen aufruft, muss der Protokolltreiber sicherstellen, dass die NET_BUFFER_LIST Strukturen in der Reihenfolge eingerichtet werden, in der die Netzwerkdaten über das Netzwerk gesendet werden sollen.

Sobald ein Protokolltreiber NdisSendNetBufferListsaufruft, gibt er den Besitz der NET_BUFFER_LIST Strukturen und aller zugehörigen Ressourcen zurück. NDIS ruft die ProtocolSendNetBufferListsComplete--Funktion auf, um die Strukturen und Daten an den Protokolltreiber zurückzugeben. NDIS kann die Strukturen und Daten aus mehreren Sendeanforderungen in einer einzigen verknüpften Liste mit NET_BUFFER_LIST Strukturen sammeln, bevor sie die Liste an ProtocolSendNetBufferListsComplete übergibt.

Bis NDIS ProtocolSendNetBufferListsCompleteaufruft, ist der aktuelle Status eines vom Protokolltreiber initiierten Sendens für den Protokolltreiber nicht verfügbar. Ein Protokolltreiber gibt vorübergehend den Besitz aller Ressourcen frei, die er für eine Sendeanforderung zugewiesen hat, wenn er NdisSendNetBufferListsaufruft. Ein Protokolltreiber sollte niemals versuchen, die NET_BUFFER_LIST Strukturen oder zugeordneten Daten nach dem Aufruf NdisSendNetBufferListszu untersuchen.

Anforderungen

Anforderung Wert
mindestens unterstützte Client- Unterstützt in NDIS 6.0 und höher.
Zielplattform- Universal
Header- ndis.h (include Ndis.h)
Library Ndis.lib
IRQL- <=DISPATCH_LEVEL
DDI-Complianceregeln Irql_SendRcv_Function(ndis)

Siehe auch

DriverEntry-

MiniportSendNetBufferLists

NET_BUFFER

NET_BUFFER_LIST

NET_BUFFER_LIST_INFO

NdisAllocateCloneNetBufferList NdisAllocateNetBufferAndNetBufferList

NdisAllocateNetBufferList

NdisMAllocatePort

NdisMSendNetBufferListsComplete

NdisOpenAdapterEx

ProtocolSendNetBufferListsComplete-