Freigeben über


EVT_NET_ADAPTER_RETURN_RX_BUFFER Rückruffunktion (netadapter.h)

Implementieren Sie diese optionale Rückruffunktion, um eine Bereinigung für einen NET_FRAGMENT Empfangspuffer auszuführen, für den Sie zuvor die manuelle Fragmentzuordnung und -anlage angegeben haben.

Syntax

EVT_NET_ADAPTER_RETURN_RX_BUFFER EvtNetAdapterReturnRxBuffer;

void EvtNetAdapterReturnRxBuffer(
  [_In_] NETADAPTER Adapter,
  [_In_] NET_FRAGMENT_RETURN_CONTEXT_HANDLE RxReturnContext
)
{...}

Parameter

[_In_] Adapter

Das Netzwerkadapterobjekt, das der Client vor einem Aufruf von NetAdapterCreate erstellt hat.

[_In_] RxReturnContext

Ein Zeiger auf eine vom Treiber zugewiesene Kontextraumstruktur.

Rückgabewert

Keine

Bemerkungen

Registrieren Sie Ihre Implementierung dieser Rückruffunktion, indem Sie den entsprechenden Member NET_ADAPTER_RX_CAPABILITIES Struktur festlegen und dann NetAdapterSetDatapathCapabilities aufrufen. Clienttreiber rufen in der Regel NetAdapterSetDatapathCapabilities beim Starten eines Netzadapters auf, bevor NetAdapterStart aufgerufen wird.

Diese Rückruffunktion ist optional, es sei denn, der Net Adapter-Clienttreiber initialisiert seine NET_ADAPTER_RX_CAPABILITIES-Struktur mithilfe der NET_ADAPTER_RX_CAPABILITIES_INIT_DRIVER_MANAGED-Funktion . Mit dieser Initialisierungsfunktion teilt der Treiber dem Betriebssystem mit, dass er die Zuordnung und Anlage von NET_FRAGMENT Empfangspuffern manuell verwaltet. Daher muss er in diesem Fall diese Rückruffunktion bereitstellen, damit das Betriebssystem aufrufen kann, sobald das System mit dem Puffer fertig ist.

Beispiel

In dieser Rückruffunktion kann der Clienttreiber alle benötigten Bereinigungs- oder Folgeaktionen ausführen, nachdem das Betriebssystem diesen Empfangspuffer abgeschlossen hat. Im folgenden Beispiel enthält der Rückgabekontext ein Element zum Nachverfolgen der Anzahl der angegebenen Pakete sowie ein Speicherobjekt, das während der Empfangsverarbeitung für einen Lookaside-Puffer verwendet wird. Die Fehlerbehandlung wurde aus Gründen der Übersichtlichkeit ausgelassen.

VOID
MyReturnRxBuffer(
	_In_	NETADAPTER							Adapter,
	_In_	NET_FRAGMENT_RETURN_CONTEXT_HANDLE	RxReturnContext
)
{
	UNREFERENCED_PARAMETER(Adapter);

	RxReturnContext->IndicatedPackets--;

	// Clean up the lookaside buffer if this is the last packet
	if(RxReturnContext->IndicatedPackets == 0)
	{
		WdfObjectDelete(RxReturnContext->LookasideBufferMemory);
	}
}

Anforderungen

Anforderung Wert
Zielplattform Universell
KMDF-Mindestversion 1,25
UMDF-Mindestversion 2.33
Kopfzeile netadapter.h (include netadaptercx.h)
IRQL <= DISPATCH_LEVEL

Weitere Informationen

NET_ADAPTER_RX_CAPABILITIES