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

Hyper-V 拡張可能スイッチ拡張機能は UpdateNetBufferListDestinations 関数を呼び出して、拡張機能が複数の拡張可能スイッチの宛先ポートを含むパケットに加えた変更をコミットします。 関数は、これらの変更をパケットの NET_BUFFER_LIST 構造のアウトオブバンド (OOB) 拡張可能スイッチ転送コンテキストに保存します。

構文

NDIS_SWITCH_UPDATE_NET_BUFFER_LIST_DESTINATIONS NdisSwitchUpdateNetBufferListDestinations;

NDIS_STATUS NdisSwitchUpdateNetBufferListDestinations(
  [in]      NDIS_SWITCH_CONTEXT NdisSwitchContext,
  [in, out] PNET_BUFFER_LIST NetBufferList,
  [in]      UINT32 NumberOfNewDestinations,
  [in]      PNDIS_SWITCH_FORWARDING_DESTINATION_ARRAY Destinations
)
{...}

パラメーター

[in] NdisSwitchContext

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

[in, out] NetBufferList

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

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

[in] NumberOfNewDestinations

パケットに追加された新しい宛先ポートの数を指定する UINT32 値。

[in] Destinations

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

メモ 拡張機能は、 GetNetBufferListDestinations 関数の以前の呼び出しを通じてこの構造体を受け取ります。
 

戻り値

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

注釈

拡張可能スイッチ拡張機能は 、GetNetBufferListDestinations 関数を呼び出して、パケットの拡張可能スイッチ宛先ポートの配列を取得します。 関数が正常に返された場合、配列は Destinations パラメーターを介して取得されます。このパラメーターには、 NDIS_SWITCH_FORWARDING_DESTINATION_ARRAY 構造体へのポインターが含まれます。 この配列内の各要素は、パケットの宛先ポートを指定する NDIS_SWITCH_PORT_DESTINATION 構造体として書式設定されます。

拡張機能が NDIS_SWITCH_FORWARDING_DESTINATION_ARRAY 構造体を取得すると、拡張機能で次の操作を実行できます。

拡張機能が NDIS_SWITCH_FORWARDING_DESTINATION_ARRAY 構造体の宛先ポートを追加または変更する場合、拡張機能は UpdateNetBufferListDestinations 関数を呼び出して、それらの変更をパケットの NET_BUFFER_LIST 構造にコミットする必要があります。
メモ 転送拡張機能のみが UpdateNetBufferListDestinations を呼び出して、複数の宛先ポートを持つパケットに対して追加または変更された宛先ポートをコミットできます。 この種類の拡張機能の詳細については、「拡張機能の 転送」を参照してください。
 
UpdateNetBufferListDestinations の呼び出しがNDIS_STATUS_SUCCESSを返した場合、拡張可能スイッチ インターフェイスは、パケットの送受信操作が完了するまで、宛先ポートで参照されている拡張可能スイッチ ポートとネットワーク アダプター接続が削除されないことを保証します。

また、宛先ポートの変更をコミットした後は、宛先ポートを削除できず、宛先ポートのNDIS_SWITCH_PORT_DESTINATION構造の IsExcluded メンバーのみを変更できます。 詳細については、「 拡張可能スイッチの宛先ポートへのパケット配信の除外」を参照してください。

メモ パフォーマンス上の理由から、拡張機能は UpdateNetBufferListDestinations 関数を呼び出して、宛先ポートが 1 つだけのパケットに変更をコミットしないでください。 代わりに、拡張機能は AddNetBufferListDestination を呼び出して、パケットの宛先ポートに変更をコミットします。
 
拡張可能スイッチ転送コンテキストの詳細については、「 Hyper-V 拡張可能スイッチ転送コンテキスト」を参照してください。

要件

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

こちらもご覧ください

AllocateNetBufferListForwardingContext

GetNetBufferListDestinations

NDIS_SWITCH_PORT_DESTINATION

NET_BUFFER

NET_BUFFER_LIST

NdisFGetOptionalSwitchHandlers

NdisFOidRequest

OID_SWITCH_NIC_DELETE