EVT_NET_ADAPTER_RETURN_RX_BUFFER コールバック関数 (netadapter.h)

この省略可能なコールバック関数を実装して、以前に手動フラグメント割り当てと添付ファイルを指定した NET_FRAGMENT 受信バッファーでクリーンアップを実行します。

構文

EVT_NET_ADAPTER_RETURN_RX_BUFFER EvtNetAdapterReturnRxBuffer;

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

パラメーター

[_In_] Adapter

NetAdapterCreate の以前の呼び出しでクライアントが作成したネットワーク アダプター オブジェクト。

[_In_] RxReturnContext

ドライバーによって割り当てられたコンテキスト空間構造体へのポインター。

戻り値

なし

解説

構造体の適切な NET_ADAPTER_RX_CAPABILITIES メンバーを設定し、 NetAdapterSetDatapathCapabilities を呼び出して、このコールバック関数の実装を登録します。 クライアント ドライバーは通常、 NetAdapterStart を呼び出す前に、Net アダプターの起動時に NetAdapterSetDatapathCapabilities を呼び出します。

このコールバック関数は、net アダプター クライアント ドライバーが NET_ADAPTER_RX_CAPABILITIES_INIT_DRIVER_MANAGED 関数を使用してそのNET_ADAPTER_RX_CAPABILITIES構造体を初期化しない限り、省略可能です。 この初期化関数を使用すると、ドライバーはオペレーティング システムに対して、 NET_FRAGMENT受信バッファー の割り当てと添付ファイルを手動で管理していることを伝えます。そのため、この場合、オペレーティング システムがバッファーを使用してシステムが終了した後に呼び出すには、このコールバック関数を提供する必要があります。

このコールバック関数では、オペレーティング システムがこの受信バッファーで終了したので、クライアント ドライバーは必要なクリーンアップまたはフォローアップアクションを実行できます。 次の例では、戻りコンテキストには、指定されたパケットの数を追跡するメンバーと、受信処理中にルックアサイド バッファーに使用されるメモリ オブジェクトが含まれています。 わかりやすくするために、エラー処理は省略されています。

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);
	}
}

要件

要件
対象プラットフォーム ユニバーサル
最小 KMDF バージョン 1.25
最小 UMDF バージョン 2.33
Header netadapter.h (netadaptercx.h を含む)
IRQL <= DISPATCH_LEVEL

こちらもご覧ください

NET_ADAPTER_RX_CAPABILITIES