NDIS_SWITCH_GET_NET_BUFFER_LIST_SWITCH_CONTEXT コールバック関数 (ndis.h)
Hyper-V 拡張可能スイッチ拡張機能は、GetNetBufferListSwitchContext 関数を呼び出して、 NET_BUFFER_LISTで以前に設定されたスイッチ コンテキストを取得します。
構文
NDIS_SWITCH_GET_NET_BUFFER_LIST_SWITCH_CONTEXT NdisSwitchGetNetBufferListSwitchContext;
PVOID NdisSwitchGetNetBufferListSwitchContext(
[in] NDIS_SWITCH_CONTEXT NdisSwitchContext,
[in] PNET_BUFFER_LIST NetBufferList,
[in] PNDIS_SWITCH_NET_BUFFER_LIST_CONTEXT_TYPE ContextType
)
{...}
パラメーター
[in] NdisSwitchContext
Hyper-V 拡張可能スイッチ拡張機能がアタッチされている拡張可能スイッチ モジュールのハンドルを含むNDIS_SWITCH_CONTEXT値。 拡張機能が NdisFGetOptionalSwitchHandlers を呼び出すと、このハンドルは NdisSwitchContext パラメーターを介して返されます。
[in] NetBufferList
取得するコンテキストを含む 1 つのパケットの NET_BUFFER_LIST 構造体へのポインター。
[in] ContextType
Context
コンテキストの設定時に使用された NDIS_DECLARE_SWITCH_NET_BUFFER_LIST_CONTEXT_TYPE を使用して宣言されたコンテキスト型。
戻り値
指定したコンテキストの種類に一致するコンテキストが NET_BUFFER_LIST で見つからなかった場合は NULL。 それ以外の場合は、バッファーへの NULL 以外のポインターが返されます。
注釈
SetNetBufferListSwitchContext API を使用すると、拡張機能は、イングレスのNET_BUFFER_LISTにコンテキストをアタッチし、エグレスでそれを取得できます。 それでも、拡張機能は、エグレスに存在しないイングレス コンテキストに対する回復性を持つ必要があります。 スイッチ コンテキストは、NET_BUFFER_LISTが複製されるときに保持されないため、イングレスとエグレスの間でNET_BUFFER_LISTが複製されるシナリオでは、NET_BUFFER_LISTには元のスイッチ コンテキストはありません。
拡張機能は、コンテキストの有効期間を管理する必要があります。 1 つの方法は、NDIS NET_BUFFER_LIST コンテキスト ( NdisAllocateNetBufferListContext を使用するか、拡張機能がNET_BUFFER_LIST プールを所有している場合は事前構成済み) を割り当て、 SetNetBufferListSwitchContext を 使用して、コンテキスト型識別子を NDIS NET_BUFFER_LIST コンテキストに関連付けます。 NBL が完了すると、拡張機能は NDIS NET_BUFFER_LIST コンテキストを解放できます ( NdisFreeNetBufferListContext を使用するか、拡張機能によって生成された場合はNET_BUFFER_LIST自体を解放します)。
拡張可能スイッチ転送コンテキストの詳細については、「 Hyper-V 拡張可能スイッチ転送コンテキスト」を参照してください。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | NDIS 6.30 以降でサポートされています。 |
対象プラットフォーム | デスクトップ |
Header | ndis.h (Ndis.h を含む) |
IRQL | <= DISPATCH_LEVEL |
こちらもご覧ください
AllocateNetBufferListForwardingContext
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示