次の方法で共有


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 データをソース パケットから宛先パケットにコピーします。 このデータには、次のものが含まれます。

  • NetBufferListInfo のデータ ソース パケットの NET_BUFFER_LIST 構造体の配列です。
  • ソース パケットの拡張可能スイッチ転送コンテキストからの 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 以降でサポートされています。
ターゲット プラットフォーム デスクトップ
ヘッダー ndis.h (Ndis.h を含む)
IRQL <= DISPATCH_LEVEL

関連項目

AllocateNetBufferListForwardingContext

NDIS_SWITCH_FORWARDING_DETAIL_NET_BUFFER_LIST_INFO

NET_BUFFER_LIST

NdisAllocateCloneNetBufferList

NdisAllocateFragmentNetBufferList

NdisFGetOptionalSwitchHandlers