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

AllocateNetBufferListForwardingContext 関数は、拡張可能スイッチ内の送受信操作用にNET_BUFFER_LIST構造体を準備します。

構文

NDIS_SWITCH_ALLOCATE_NET_BUFFER_LIST_FORWARDING_CONTEXT NdisSwitchAllocateNetBufferListForwardingContext;

NDIS_STATUS NdisSwitchAllocateNetBufferListForwardingContext(
  [in]      NDIS_SWITCH_CONTEXT NdisSwitchContext,
  [in, out] PNET_BUFFER_LIST NetBufferList
)
{...}

パラメーター

[in] NdisSwitchContext

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

[in, out] NetBufferList

NET_BUFFER_LIST構造体のリンクされたリストへのポインター。

戻り値

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

注釈

拡張可能スイッチ拡張機能は、拡張可能スイッチのデータ パス内でパケット送信操作を開始できます。 たとえば、拡張機能は拡張可能スイッチの任意のポートにパケットを送信できます。 このデータ パスの詳細については、「 Hyper-V 拡張可能スイッチのデータ パス」を参照してください。

拡張機能が NdisAllocateNetBufferList または NdisAllocateCloneNetBufferList を呼び出して 、NET_BUFFER_LIST プールからパケットを作成または複製した後、拡張機能は AllocateNetBufferListForwardingContext 関数を 呼び出す必要があります。 この関数は、指定した NET_BUFFER_LIST 構造体の帯域外 (OOB) 拡張可能スイッチ転送コンテキストを割り当てて初期化します。 このコンテキストの詳細については、「 Hyper-V 拡張可能スイッチ転送コンテキスト」を参照してください。

拡張機能は、 AllocateNetBufferListForwardingContext 関数を介して転送コンテキストを割り当てるための次のガイドラインに従う必要があります。

  • 拡張機能は NdisAllocateNetBufferList を呼び出して、拡張機能の NET_BUFFER_LIST プールから拡張可能スイッチを介した送受信操作にパケットを割り当てます。 拡張機能は、パケットの送信元ポートと宛先ポートを初期化する前に、 AllocateNetBufferListForwardingContext を呼び出す必要があります。

    ソースと宛先の拡張可能スイッチ ポートを指定する方法の詳細については、「 Manageing Hyper-V Extensible Switch Source and Destination Port Data」を参照してください。

  • 拡張機能が AllocateNetBufferListForwardingContext を呼び出す前に、割り当てられた各NET_BUFFER_LIST構造体の SourceHandle メンバーを、拡張機能を識別するハンドル値に設定する必要があります。 拡張機能は、NDIS が拡張機能の FilterAttach 関数を呼び出すときに、NdisFilterHandle パラメーターを介してこのハンドルを受け取ります。
  • 送信操作が完了したら、拡張機能で FreeNetBufferListForwardingContext 関数を 呼び出して、転送コンテキストのリソースの割り当てを解除する必要があります。 この拡張機能は、 NdisFreeNetBufferList を呼び出して NET_BUFFER_LIST プールに パケットを返す前に、この関数を呼び出す必要があります。
  • 拡張機能がパケットを複製する場合は、 CopyNetBufferListInfo を呼び出して、転送コンテキストを元のパケットから複製されたパケットにコピーする必要があります。 拡張機能は、 AllocateNetBufferListForwardingContext を呼び出した後にこれを行う必要があります。
送信操作を開始する方法の詳細については、「 Filter Module Send and Receive Operations」を参照してください。
メモNetBufferList パラメーターに複数のNET_BUFFER_LIST構造体のリンクリストへのポインターが含まれている場合、リスト内の最初のNET_BUFFER_LIST構造体にのみ転送コンテキストが割り当てられます。
 

要件

要件
サポートされている最小のクライアント NDIS 6.30 以降でサポートされています。
対象プラットフォーム デスクトップ
Header ndis.h (Ndis.h を含む)
IRQL <= DISPATCH_LEVEL

こちらもご覧ください

CopyNetBufferListInfo

FilterAttach

FreeNetBufferListForwardingContext

NET_BUFFER

NET_BUFFER_LIST

NdisAllocateNetBufferList

NdisFGetOptionalSwitchHandlers

NdisFreeNetBufferList