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

Hyper-V 拡張可能スイッチ拡張機能は 、CopyNetBufferListInfo 関数を呼び出して、帯域外 (OOB) 転送コンテキストをソース パケットの NET_BUFFER_LIST 構造体から宛先パケットの NET_BUFFER_LIST 構造にコピーします。 このコンテキストには、拡張可能スイッチのソース ポートとネットワーク アダプターの情報が含まれます。 拡張可能スイッチの宛先ポート情報もコピーできます。

構文

NDIS_SWITCH_COPY_NET_BUFFER_LIST_INFO NdisSwitchCopyNetBufferListInfo;

NDIS_STATUS NdisSwitchCopyNetBufferListInfo(
  [in]      NDIS_SWITCH_CONTEXT NdisSwitchContext,
  [in, out] PNET_BUFFER_LIST DestNetBufferList,
  [in]      PNET_BUFFER_LIST SrcNetBufferList,
  [in]      UINT32 Flags
)
{...}

パラメーター

[in] NdisSwitchContext

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

[in, out] DestNetBufferList

拡張可能スイッチ転送コンテキストがコピーされる宛先パケットの NET_BUFFER_LIST 構造体へのポインター。

[in] SrcNetBufferList

拡張可能スイッチ転送コンテキストのコピー元のソース パケットの NET_BUFFER_LIST 構造体へのポインター。

[in] Flags

UINT32 値。 NDIS_SWITCH_COPY_NBL_INFO_FLAGS_PRESERVE_DESTINATIONS フラグを指定すると、関数は拡張可能スイッチの宛先ポートを送信元パケットから宛先パケットにコピーします。

送信元パケットの NDIS_SWITCH_FORWARDING_DETAIL_NET_BUFFER_LIST_INFO 共用体内に含まれるデータは、常に宛先パケット内の拡張可能スイッチ転送コンテキストにコピーされます。 このデータには、パケットの送信元であるネットワーク アダプター接続のソース ポート識別子とインデックスが含まれます。 宛先パケットにコピーされる拡張可能スイッチ宛先ポートの数に応じて、 NDIS_SWITCH_FORWARDING_DETAIL_NET_BUFFER_LIST_INFO 共用体の NumAvailableDestinations メンバーが宛先パケットで更新されます。

転送コンテキストの詳細については、「 Hyper-V 拡張可能スイッチ転送コンテキスト」を参照してください。

戻り値

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

注釈

拡張可能スイッチ拡張機能は 、CopyNetBufferListInfo 関数を呼び出して、ソース パケットから宛先パケットに OOB データをコピーします。 これには次のデータが含まれます。

  • ソース パケットのNET_BUFFER_LIST構造体の NetBufferListInfo 配列からのデータ。
  • ソース パケットの拡張可能 スイッチ転送コンテキストからのNDIS_SWITCH_FORWARDING_DETAIL_NET_BUFFER_LIST_INFO データ。
  • 送信元パケットの拡張可能スイッチ転送コンテキストからの拡張可能スイッチの宛先ポートのデータ。
    メモ このデータは、NDIS_SWITCH_COPY_NBL_INFO_FLAGS_PRESERVE_DESTINATIONS フラグが指定されている場合にのみコピーされます。
     
拡張機能が CopyNetBufferListInfo を呼び出す前に、次の手順に従って宛先パケットの NET_BUFFER_LIST 構造を準備する必要があります。
  1. 拡張機能は、最初に、送信元パケット のNET_BUFFER_LIST 構造から派生した宛先パケットの NET_BUFFER_LIST構造体を初期化する 必要があります。

    たとえば、拡張機能は NdisAllocateCloneNetBufferList を呼び出して、ソース パケットの完全なコピーを作成できます。 また、この拡張機能は NdisAllocateFragmentNetBufferList を呼び出して、ソース パケットのフラグメントのみのコピーを作成することもできます。 詳細については、「 派生NET_BUFFER_LIST構造体」を参照してください。

  2. 拡張機能は AllocateNetBufferListForwardingContext 関数を 呼び出して、宛先パケットの拡張可能スイッチ転送コンテキストを割り当てる必要があります。 このデータは、パケットの送信元ポートや宛先ポートなどの OOB 拡張可能スイッチ転送情報を格納するために使用されます。
メモ 拡張機能がソース パケットを作成または複製している場合、拡張機能はパケットの AllocateNetBufferListForwardingContext 関数を 以前に呼び出している必要があります。 拡張が拡張可能スイッチ ドライバー スタックをフィルター処理するソース パケットには、割り当てられた拡張可能スイッチ転送コンテキストが既に含まれています。
 

要件

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

こちらもご覧ください

AllocateNetBufferListForwardingContext

NDIS_SWITCH_FORWARDING_DETAIL_NET_BUFFER_LIST_INFO

NET_BUFFER_LIST

NdisAllocateCloneNetBufferList

NdisAllocateFragmentNetBufferList

NdisFGetOptionalSwitchHandlers