Freigeben über


PROTOCOL_CO_RECEIVE_NET_BUFFER_LISTS Rückruffunktion (ndis.h)

Die ProtocolCoReceiveNetBufferLists Funktionsprozesse erhalten Hinweise von zugrunde liegenden Treibern.

Hinweis Sie müssen die Funktion mithilfe des PROTOCOL_CO_RECEIVE_NET_BUFFER_LISTS-Typs deklarieren. Weitere Informationen finden Sie im folgenden Abschnitt "Beispiele".
 

Syntax

PROTOCOL_CO_RECEIVE_NET_BUFFER_LISTS ProtocolCoReceiveNetBufferLists;

void ProtocolCoReceiveNetBufferLists(
  [in] NDIS_HANDLE ProtocolBindingContext,
  [in] NDIS_HANDLE ProtocolVcContext,
  [in] PNET_BUFFER_LIST NetBufferLists,
  [in] ULONG NumberOfNetBufferLists,
  [in] ULONG ReceiveFlags
)
{...}

Parameter

[in] ProtocolBindingContext

Ein Handle für einen Kontextbereich, den der Protokolltreiber zugeordnet hat, um Zustandsinformationen für eine Bindung beizubehalten. Dieses Handle wurde in einem vorherigen Aufruf von NdisOpenAdapterExan NDIS übergeben.

[in] ProtocolVcContext

Ein Handle zu einem vom Protokolltreiber zugewiesenen Kontextbereich, in dem dieser Treiber die Laufzeitstatusinformationen für die virtuelle Verbindung (VC) verwaltet. Ein Client- oder eigenständiger Anruf-Manager hat dieses Handle entweder bereitgestellt, wenn er die NdisCoCreateVc--Funktion oder aus seiner ProtocolCoCreateVc--Funktion aufgerufen hat.

[in] NetBufferLists

Eine verknüpfte Liste der NET_BUFFER_LIST Strukturen, die dem zugrunde liegenden Treiber zugeordnet wurden. Jede NET_BUFFER_LIST Struktur ist in der Regel einer NET_BUFFER Struktur zugeordnet.

[in] NumberOfNetBufferLists

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

[in] ReceiveFlags

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 Null fest. ProtocolCoReceiveNetBufferLists unterstützt die folgenden Flags:

NDIS_RECEIVE_FLAGS_DISPATCH_LEVEL

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

NDIS_RECEIVE_FLAGS_RESOURCES

NDIS übernimmt den Besitz der NET_BUFFER_LIST Strukturen und alle angefügten NET_BUFFER Strukturen unmittelbar nach dem Aufruf von ProtocolCoReceiveNetBufferLists zurück.

Rückgabewert

Nichts

Bemerkungen

Die ProtocolCoReceiveNetBufferLists--Funktion ist für CoNDIS-Protokolltreiber erforderlich. NDIS ruft ProtocolCoReceiveNetBufferLists auf, nachdem ein gebundener Miniporttreiber den NdisMCoIndicateReceiveNetBufferLists Funktion. Ein Aufruf von ProtocolCoReceiveNetBufferLists kann auch als Ergebnis eines Loopbacks auftreten.

Wenn das NDIS_RECEIVE_FLAGS_RESOURCES Flag im CoReceiveFlags- Parameter nicht festgelegt ist, behält der Protokolltreiber den Besitz der NET_BUFFER_LIST Strukturen bei, bis er die NdisReturnNetBufferLists Funktion. Wenn NDIS das NDIS_RECEIVE_FLAGS_RESOURCES-Flag festlegt, kann der Protokolltreiber die NET_BUFFER_LIST Struktur und zugeordnete Ressourcen nicht beibehalten. NDIS_RECEIVE_FLAGS_RESOURCES gibt an, dass ein zugrunde liegender Treiber ressourcenarm empfangen hat. In diesem Fall sollte die funktion ProtocolCoReceiveNetBufferLists die empfangenen Daten so schnell wie möglich in protokollgeteilten Speicher kopieren und zurückgeben.

Auf einem Multiprozessorsystem können ProtocolCoReceiveNetBufferLists- gleichzeitig auf mehreren Prozessorn ausgeführt werden. Wenden Sie in dieser Situation Schutz (z. B. Drehsperren) auf kritische Datenstrukturen an, die ProtocolCoReceiveNetBufferLists Zugriffe.

NDIS ruft ProtocolCoReceiveNetBufferLists bei IRQL-<= DISPATCH_LEVEL auf.

beispiele für

Um eine ProtocolCoReceiveNetBufferLists--Funktion zu definieren, müssen Sie zuerst eine Funktionsdeklaration bereitstellen, die den Typ der Funktion identifiziert, die Sie definieren. Windows stellt eine Reihe von Funktionstypen für Treiber bereit. Durch das Deklarieren einer Funktion mithilfe der Funktionstypen können Codeanalyse für Treiber, statische Treiberüberprüfung (SDV) und andere Überprüfungstools Fehler finden, und es ist eine Anforderung zum Schreiben von Treibern für das Windows-Betriebssystem.

Um beispielsweise eine ProtocolCoReceiveNetBufferLists Funktion zu definieren, die den Namen "MyCoReceiveNetBufferLists" hat, verwenden Sie den PROTOCOL_CO_RECEIVE_NET_BUFFER_LISTS Typ, wie in diesem Codebeispiel gezeigt:

PROTOCOL_CO_RECEIVE_NET_BUFFER_LISTS MyCoReceiveNetBufferLists;

Implementieren Sie dann Ihre Funktion wie folgt:

_Use_decl_annotations_
VOID
 MyCoReceiveNetBufferLists(
    NDIS_HANDLE  ProtocolBindingContext,
    NDIS_HANDLE  ProtocolVcContext,
    INPNET_BUFFER_LIST  NetBufferLists,
    ULONG  NumberOfNetBufferLists,
    ULONG  ReceiveFlags
    )
  {...}

Der PROTOCOL_CO_RECEIVE_NET_BUFFER_LISTS Funktionstyp wird in der Ndis.h-Headerdatei definiert. Um Fehler genauer zu identifizieren, wenn Sie die Codeanalysetools ausführen, müssen Sie der Funktionsdefinition die Use_decl_annotations Anmerkung hinzufügen. Die Use_decl_annotations Anmerkung stellt sicher, dass die Anmerkungen, die auf den Funktionstyp PROTOCOL_CO_RECEIVE_NET_BUFFER_LISTS in der Headerdatei angewendet werden, verwendet werden. Weitere Informationen zu den Anforderungen für Funktionsdeklarationen finden Sie unter Deklarieren von Funktionen mithilfe von Funktionsrollentypen für NDIS-Treiber.

Informationen zu Use_decl_annotationsfinden Sie unter Annotating Function Behavior.

Anforderungen

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

Siehe auch

CoNDIS-Protokolltreiber

MiniportReturnNetBufferLists

NET_BUFFER

NET_BUFFER_LIST

NdisCoCreateVc

NdisMCoIndicateReceiveNetBufferLists

NdisOpenAdapterEx

NdisReturnNetBufferLists

ProtocolCoCreateVc-

ProtocolCoSendNetBufferListsComplete-