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 durchzufü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 in einem vorherigen 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 das entsprechende Element NET_ADAPTER_RX_CAPABILITIES Struktur festlegen und dann NetAdapterSetDatapathCapabilities aufrufen. Clienttreiber rufen in der Regel NetAdapterSetDatapathCapabilities auf, wenn sie einen Netzadapter starten, 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 . Durch Verwendung dieser Initialisierungsfunktion teilt der Treiber dem Betriebssystem mit, dass er die Zuordnung und Anlage von NET_FRAGMENT Puffer manuell empfängt. 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 Nachverfolgungsaktionen 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 Klarheit 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
Kopfzeile netadapter.h (include netadaptercx.h)
IRQL <= DISPATCH_LEVEL

Weitere Informationen

NET_ADAPTER_RX_CAPABILITIES