次の方法で共有


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

AddNetBufferListDestination 関数は、NET_BUFFER_LIST構造体で指定されたパケットの単一の宛先ポートを追加します。

構文

NDIS_SWITCH_ADD_NET_BUFFER_LIST_DESTINATION NdisSwitchAddNetBufferListDestination;

NDIS_STATUS NdisSwitchAddNetBufferListDestination(
  [in]      NDIS_SWITCH_CONTEXT NdisSwitchContext,
  [in, out] PNET_BUFFER_LIST NetBufferList,
  [in]      PNDIS_SWITCH_PORT_DESTINATION Destination
)
{...}

パラメーター

[in] NdisSwitchContext

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

[in, out] NetBufferList

パケットの NET_BUFFER_LIST 構造体へのポインター。

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

[in] Destination

NDIS_SWITCH_PORT_DESTINATION構造体へのポインター。 この構造体は、パケットが転送される宛先拡張可能スイッチ ポートを指定します。

戻り値

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

注釈

転送拡張可能スイッチ拡張機能は AddNetBufferListDestination を呼び出して、パケットの 1 つの拡張可能スイッチ宛先ポートを定義します。 拡張機能は、 NDIS_SWITCH_PORT_DESTINATION 構造体を初期化することによって、このポートを指定します。 拡張機能は 、Destination パラメーターをこの構造体へのポインターに設定します。 拡張可能スイッチの宛先ポートを指定する方法の詳細については、「 Hyper-V 拡張可能スイッチの宛先ポート データの管理」を参照してください。

メモ パフォーマンス上の理由から、拡張機能では、複数の宛先ポートを持つ AddNetBufferListDestination パケットを呼び出さないでください。
 
拡張機能は、 AddNetBufferListDestination を呼び出す前に、次のガイドラインに従う必要があります。
  • AddNetBufferListDestination を呼び出してパケットの宛先ポートを追加できるのは、転送拡張機能だけです。 この種類の拡張機能の詳細については、「拡張機能の 転送」を参照してください。
  • 転送拡張機能が 1 つの宛先ポートを持つパケットを生成する場合、拡張機能は最初に AllocateNetBufferListForwardingContext 関数を 呼び出す必要があります。 この関数は、パケットの拡張可能スイッチ転送コンテキストを割り当てます。 このデータには、パケットの帯域外 (OOB) 情報内の拡張可能スイッチの送信元ポートと宛先ポートが含まれています。

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

  • 拡張機能は、 NDIS_SWITCH_PORT_DESTINATION 構造体の宛先ポート情報を変更した後、 AddNetBufferListDestination を呼び出して、パケットの NET_BUFFER_LIST 構造体に変更をコミットします。
    メモ パフォーマンス上の理由から、拡張機能は、パケットの変更をコミットするために UpdateNetBufferListDestinations 関数を呼び出さないでください。
     
メモ転送拡張機能が宛先ポートの変更を転送コンテキストにコミットした後は、宛先ポートを削除できず、宛先ポートのNDIS_SWITCH_PORT_DESTINATION構造の IsExcluded メンバーのみを変更できます。 詳細については、「 拡張可能スイッチの宛先ポートへのパケット配信の除外」を参照してください。
 

要件

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

こちらもご覧ください

GetNetBufferListDestinations

NDIS_SWITCH_PORT_DESTINATION

NET_BUFFER

NET_BUFFER_LIST

NdisFGetOptionalSwitchHandlers

UpdateNetBufferListDestinations