Share via


NDIS_SWITCH_SET_NET_BUFFER_LIST_SWITCH_CONTEXT コールバック関数 (ndis.h)

Hyper-V 拡張可能スイッチ拡張機能は 、SetNetBufferListSwitchContext 関数を呼び出して、拡張機能によって割り当てられたコンテキスト バッファーを NET_BUFFER_LISTにアタッチします。 その後、他の拡張機能が独自のコンテキストを設定しているかどうかに関係なく、イングレスでコンテキストが設定され、NBL がエグレスで再び表示されるかどうかなど、そのNET_BUFFER_LISTの有効期間にわたってコンテキストにアクセスできます。 この種類のアクセスは、既存の NDIS NET_BUFFER_LIST コンテキスト API (NdisAllocateNetBufferListContext/ NET_BUFFER_LIST_CONTEXT_DATA_START) を使用することはできません。別の拡張機能は、元の NDIS コンテキストへのポインターが失われるNET_BUFFER_LISTの所有権を取得するときに NDIS コンテキストを割り当てることができます。

構文

NDIS_SWITCH_SET_NET_BUFFER_LIST_SWITCH_CONTEXT NdisSwitchSetNetBufferListSwitchContext;

NDIS_STATUS NdisSwitchSetNetBufferListSwitchContext(
  [in]      NDIS_SWITCH_CONTEXT NdisSwitchContext,
  [in, out] PNET_BUFFER_LIST NetBufferList,
  [in]      PNDIS_SWITCH_NET_BUFFER_LIST_CONTEXT_TYPE ContextType,
  [in]      PVOID Context
)
{...}

パラメーター

[in] NdisSwitchContext

Hyper-V 拡張可能スイッチ拡張機能がアタッチされている拡張可能スイッチ モジュールのハンドルを含むNDIS_SWITCH_CONTEXT値。 拡張機能が NdisFGetOptionalSwitchHandlers を呼び出すと、このハンドルは NdisSwitchContext パラメーターを介して返されます。

[in, out] NetBufferList

コンテキストの関連付けを受け取る 1 つのパケットの NET_BUFFER_LIST 構造体へのポインター。

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

[in] ContextType

コンテキストを取得するときにキーとして使用される NDIS_DECLARE_SWITCH_NET_BUFFER_LIST_CONTEXT_TYPE を使用して宣言されたコンテキスト型。

[in] Context

指定した ContextType を使用して取得できるコンテキストへのポインター。

戻り値

呼び出しが成功した場合、関数は NDIS_STATUS_SUCCESSを返します。 それ以外の場合は、Ndis.h で定義されているNDIS_STATUS_Xxx エラー コードを返します。

注釈

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

GetNetBufferListSwitchContext

NDIS_SWITCH_PORT_DESTINATION

NET_BUFFER

NET_BUFFER_LIST

NdisFGetOptionalSwitchHandlers

NdisFOidRequest