NdisCoSendNetBufferLists-Funktion (ndis.h)

Die NdisCoSendNetBufferLists-Funktion sendet Netzwerkdaten, die in einer angegebenen Liste von NET_BUFFER_LIST Strukturen enthalten sind.

Syntax

void NdisCoSendNetBufferLists(
  [in] NDIS_HANDLE      NdisVcHandle,
  [in] PNET_BUFFER_LIST NetBufferLists,
  [in] ULONG            SendFlags
);

Parameter

[in] NdisVcHandle

Ein Handle für eine virtuelle Verbindung (VC), das das Ziel der Sendeanforderung identifiziert.

[in] NetBufferLists

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

[in] SendFlags

Flags, die Attribute für den Sendevorgang definieren. Die Flags können mit einem bitweisen OR-Vorgang kombiniert werden. Um alle Flags zu löschen, legen Sie diesen Parameter auf 0 fest. NdisCoSendNetBufferLists unterstützt die folgenden Flags:

NDIS_SEND_FLAGS_DISPATCH_LEVEL

Die aktuelle IRQL ist DISPATCH_LEVEL. Weitere Informationen zu diesem Flag finden Sie unter Dispatch IRQL Tracking.

NDIS_SEND_FLAGS_CHECK_FOR_LOOPBACK

NDIS sollte auf Loopback überprüfen. Standardmäßig stellt NDIS keine Daten an den Treiber zurück, der die Sendeanforderung übermittelt hat. Ein überlastender Treiber kann dieses Verhalten überschreiben, indem er NDIS_SEND_FLAGS_CHECK_FOR_LOOPBACK festlegt. Wenn dieses Flag 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 die Kriterien dem überlastenden Treiber entsprechen. Dieses Flag wirkt sich nicht auf die Überprüfung auf Loopback oder Das Schleifenrücken für andere Bindungen aus.

Rückgabewert

Keine

Bemerkungen

Nachdem ein CoNDIS-Protokolltreiber NdisCoSendNetBufferLists aufgerufen hat, übermittelt NDIS die NET_BUFFER_LIST Strukturen, die der NetBufferLists-Parameter an einen zugrunde liegenden Treiber angibt. MiniportCoSendNetBufferLists-Funktion .

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

Der Protokolltreiber kann NET_BUFFER_LIST Strukturen vorab zuordnen, z. B. in seiner DriverEntry-Routine . Alternativ kann der Protokolltreiber die Strukturen unmittelbar vor dem Aufruf von NdisCoSendNetBufferLists zuordnen und sie dann freigeben, wenn der Sendevorgang abgeschlossen ist. Wenn NDIS eine NET_BUFFER_LIST-Struktur an das ProtocolCoSendNetBufferListsComplete-Funktion , der Protokolltreiber kann die NET_BUFFER_LIST Struktur und alle zugehörigen Ressourcen für die Wiederverwendung vorbereiten. Wenn Sie die NET_BUFFER_LIST Strukturen wiederverwenden, können Sie eine bessere Leistung erzielen, als die Strukturen an einen Pool zurückzugeben und sie dann für einen anderen Sendevorgang neu zuzuordnen.

Ein Protokolltreiber muss das SourceHandle-Element jeder NET_BUFFER_LIST Struktur auf denselben Wert festlegen, den er am NdisVcHandle-Parameter übergibt. Das Quellhandle stellt die Informationen bereit, die NDIS benötigt, um die NET_BUFFER_LIST Struktur an den Protokolltreiber zurückzugeben, nachdem der zugrunde liegende Miniporttreiber die NdisMCoSendNetBufferListsComplete-Funktion .

Bevor ein Protokolltreiber NdisCoSendNetBufferLists aufruft, kann der Treiber Informationen festlegen, die die Sendeanforderung mit dem NET_BUFFER_LIST_INFO-Makro begleiten. Der zugrunde liegende Treiber kann diese Informationen mit dem makro NET_BUFFER_LIST_INFO abrufen.

Bevor ein Protokolltreiber NdisCoSendNetBufferLists mit einer Liste von NET_BUFFER_LIST Strukturen aufruft, muss der Protokolltreiber sicherstellen, dass die NET_BUFFER_LIST Strukturen in der Reihenfolge eingerichtet sind, in der die Netzwerkdaten gesendet werden sollen.

Sobald ein Protokolltreiber NdisCoSendNetBufferLists aufruft, besitzt er nicht mehr die NET_BUFFER_LIST Strukturen und alle zugeordneten Ressourcen. NDIS ruft die ProtocolCoSendNetBufferListsComplete-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 von NET_BUFFER_LIST Strukturen sammeln, bevor die Liste an ProtocolCoSendNetBufferListsComplete übergeben wird.

Bis NDIS ProtocolCoSendNetBufferListsComplete aufruft, ist die 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 NdisCoSendNetBufferLists aufruft. Ein Protokolltreiber sollte niemals versuchen, die NET_BUFFER_LIST Strukturen oder zugehörigen Daten zu untersuchen, nachdem der Treiber NdisCoSendNetBufferLists aufgerufen hat.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Unterstützt für NDIS 6.0-Treiber in Windows Vista.
Zielplattform Desktop
Kopfzeile ndis.h (einschließlich Ndis.h)
Bibliothek Ndis.lib
IRQL <=DISPATCH_LEVEL
DDI-Complianceregeln Irql_Connection_Function(ndis)

Weitere Informationen

DriverEntry

MiniportCoSendNetBufferLists

NET_BUFFER

NET_BUFFER_LIST

NET_BUFFER_LIST_INFO

NdisAllocateCloneNetBufferList NdisAllocateNetBufferAndNetBufferList

NdisAllocateNetBufferList

NdisMCoSendNetBufferListsComplete ProtocolCoSendNetBufferListsComplete