次の方法で共有


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 以降でサポートされています。
ターゲット プラットフォーム デスクトップ
ヘッダー ndis.h (Ndis.h を含む)
IRQL <= DISPATCH_LEVEL

関連項目

GetNetBufferListDestinations

NDIS_SWITCH_PORT_DESTINATION

NET_BUFFER

NET_BUFFER_LIST

NdisFGetOptionalSwitchHandlers

UpdateNetBufferListDestinations