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 構造体へのポインター。

メモ この構造体には、拡張可能スイッチ転送コンテキストが含まれている必要があります。 拡張機能がパケットを作成または複製した場合は、AllocateNetBufferListForwardingContext 関数を呼び出して、この構造体を以前に割り当てた必要があります。
 

[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

GetNetBufferListDestinations

NDIS_SWITCH_PORT_DESTINATION

NET_BUFFER

NET_BUFFER_LIST

NdisFGetOptionalSwitchHandlers

NdisFOidRequest

SetNetBufferListSwitchContext