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
Feedback
https://aka.ms/ContentUserFeedback.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Issues stufenweise als Feedbackmechanismus für Inhalte abbauen und durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unterFeedback senden und anzeigen für