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

SetNetBufferListSource 関数は、NET_BUFFER_LIST構造体で指定されたパケットの Hyper-V 拡張可能スイッチソース ポート識別子とネットワーク アダプター インデックスを設定します。

構文

NDIS_SWITCH_SET_NET_BUFFER_LIST_SOURCE NdisSwitchSetNetBufferListSource;

NDIS_STATUS NdisSwitchSetNetBufferListSource(
  [in] NDIS_SWITCH_CONTEXT NdisSwitchContext,
       PNET_BUFFER_LIST NetBufferList,
  [in] NDIS_SWITCH_PORT_ID PortId,
  [in] NDIS_SWITCH_NIC_INDEX NicIndex
)
{...}

パラメーター

[in] NdisSwitchContext

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

NetBufferList

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

メモ この構造体には、 AllocateNetBufferListForwardingContext 関数を呼び出して以前に割り当てられた拡張可能スイッチ転送コンテキストが含まれている必要があります。 拡張可能スイッチ転送コンテキストの詳細については、「 Hyper-V 拡張可能スイッチ転送コンテキスト」を参照してください。
 

[in] PortId

拡張可能スイッチのソース ポートの一意識別子を指定するNDIS_SWITCH_PORT_ID値。

[in] NicIndex

PortId パラメーターで指定された拡張可能スイッチ ポートに接続されているネットワーク アダプターのインデックスを指定するNDIS_SWITCH_NIC_INDEX値。

NDIS_SWITCH_NIC_INDEX値の詳細については、「 ネットワーク アダプターのインデックス値」を参照してください。

メモ このパラメーターは、接続状態のネットワーク アダプターのインデックス値を指定する必要があります。 作成済みまたは切断状態のネットワーク アダプターのインデックス値を指定することはできません。 ネットワーク接続の状態の詳細については、「 Hyper-V 拡張可能スイッチ のポートとネットワーク アダプターの状態」を参照してください。
 

戻り値

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

注釈

拡張可能スイッチ拡張機能は 、SetNetBufferListSource 関数を呼び出して、パケットの NET_BUFFER_LIST 構造でソース ポート識別子とネットワーク アダプター インデックスを設定します。 拡張機能は、次の種類のパケットに対してこれを行います。

  • 送信操作または受信操作用に拡張機能が割り当てた新しいパケット。
    メモ 拡張機能は、割り当てられたパケットに対 して SetNetBufferListSource を呼び出す前に、 AllocateNetBufferListForwardingContext を呼び出す必要があります。
     
  • 拡張機能がフィルター処理していた元のパケットから複製された重複パケット。 この拡張機能は、 NdisAllocateCloneNetBufferList を呼び出してパケットを複製します。
どちらの場合も、新しいパケットまたは重複したパケットのソース ポート識別子は NDIS_SWITCH_DEFAULT_PORT_ID に設定され、ソース ネットワーク アダプターのインデックスは NDIS_SWITCH_DEFAULT_NIC_INDEX に設定されます。 この拡張機能は SetNetBufferListSource 関数を呼び出して、パケットの NET_BUFFER_LIST 構造内のソース ポート識別子とネットワーク アダプター インデックスを変更します。

たとえば、 NDIS_SWITCH_DEFAULT_PORT_IDの送信元 ポート識別子を持つパケットは信頼され、多くの拡張可能スイッチ ポート ポリシーをバイパスします。 これらのポリシーには、アクセス制御リスト (ACL) とサービス品質 (QoS) が含まれます。 拡張機能でパケットの既定以外のソース ポートが指定されている場合は、そのポートのポリシーをパケットに適用できます。

メモNDIS_SWITCH_DEFAULT_PORT_IDの送信元ポート識別子を持つパケットは信頼されるため、拡張機能はパケット トラフィックを発信するときに、このソース ポート識別子を非常に慎重に使用する必要があります。 ソース ポートの NDIS_SWITCH_DEFAULT_PORT_ID の推奨される使用の詳細については、「 Hyper-V 拡張可能スイッチのソース ポート データの管理」を参照してください。
 
パケット送受信操作の詳細については、「 フィルター モジュールの送受信操作」を参照してください。

要件

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

こちらもご覧ください

AllocateNetBufferListForwardingContext

NET_BUFFER

NET_BUFFER_LIST

NdisAllocateCloneNetBufferList

NdisFGetOptionalSwitchHandlers