NdisMInvalidateConfigBlock 関数 (ndis.h)

ミニポート ドライバーは 、NdisMInvalidateConfigBlock 関数を呼び出して、1 つ以上の仮想関数 (VF) 構成ブロックのデータが変更されたことを NDIS に通知します。

NdisMInvalidateConfigBlock は、ネットワーク アダプターの PCIe 物理機能 (PF) のミニポート ドライバーによってのみ呼び出す必要があります。
 

構文

void NdisMInvalidateConfigBlock(
  [in] NDIS_HANDLE            NdisMiniportHandle,
  [in] NDIS_SRIOV_FUNCTION_ID VFId,
  [in] ULONGLONG              BlockMask
);

パラメーター

[in] NdisMiniportHandle

NDIS が MiniportInitializeExの MiniportAdapterHandle パラメーターに渡したネットワーク アダプター ハンドル。

[in] VFId

デバイスの場所が返される VF の識別子。

[in] BlockMask

最初の 64 VF 構成ブロックのビットマスクを指定する ULONGLONG 値。 ビットマスク内の各ビットは VF 構成ブロックに対応します。 ビットが 1 に設定されている場合、対応する VF 構成ブロックに関連付けられているデータが変更されました。

戻り値

なし

解説

VF 構成ブロックは、PF ミニポート ドライバーと VF ミニポート ドライバー間のバックチャネル通信に使用されます。 IHV では、デバイスの 1 つ以上の VF 構成ブロックを定義できます。 各 VF 構成ブロックには、IHV で定義された形式、長さ、およびブロック ID があります。

メモ 各 VF 構成ブロックからのデータは、PF および VF ミニポート ドライバーによってのみ使用されます。
 
VF 構成データは、次のドライバー間で交換されます。
  • ゲスト オペレーティング システムで実行される VF ドライバー。 このオペレーティング システムは、Hyper-V 子パーティション内で実行されます。
  • 管理オペレーティング システムで実行される PF ドライバー。

    このオペレーティング システムは、Hyper-V 親パーティション内で実行されます。

無効な VF 構成データの通知を処理するために、NDIS とミニポート ドライバーは、次の手順を実行します。
  1. ゲスト オペレーティング システムでは、NDIS は、 IOCTL_VPCI_INVALIDATE_BLOCK 要求の I/O 制御要求を発行します。 この IOCTL が完了すると、VF 構成データが変更されたことが NDIS に通知されます。
  2. 管理オペレーティング システムでは、次の手順が実行されます。
    1. PF ミニポート ドライバーは 、NDISMInvalidateConfigBlock 関数を呼び出して、VF 構成データが変更され、有効でなくなったことを NDIS に通知します。
    2. NDIS は、VF 構成ブロック データへの変更について、管理オペレーティング システムで実行される仮想化スタックを通知します。 仮想化スタックは 、BlockMask パラメーター データをキャッシュします。
      メモ PF ミニポート ドライバーが NdisMInvalidateConfigBlock を呼び出すたびに、仮想化スタックの ORs、キャッシュ内の現在の値を持つ BlockMask パラメーター データ。
       
    3. 仮想化スタックは、VF 構成データの無効化について、ゲスト オペレーティング システムで実行される仮想 PCI (VPCI) ドライバーに通知します。 仮想化スタックは、キャッシュされた BlockMask パラメーター データを VPCI ドライバーに送信します。
  3. ゲスト オペレーティング システムでは、次の手順が実行されます。
    1. VPCI ドライバーは、キャッシュされた BlockMask パラメーター データを、IOCTL_VPCI_INVALIDATE_BLOCK要求に関連付けられているVPCI_INVALIDATE_BLOCK_OUTPUT構造体の BlockMask メンバーに保存します。
    2. VPCI ドライバーは、 IOCTL_VPCI_INVALIDATE_BLOCK 要求を正常に完了します。 この場合、NDIS は VF ミニポート ドライバーに OID_SRIOV_VF_INVALIDATE_CONFIG_BLOCK の OID メソッド要求を発行します。 NDIS_SRIOV_VF_INVALIDATE_CONFIG_BLOCK_INFO要求は OID 要求で渡されます。 この構造体には、キャッシュされた BlockMask パラメーター データが含まれています。

      NDIS では、VF 構成データへの変更の連続した通知を処理する別の IOCTL_VPCI_INVALIDATE_BLOCK 要求も発行されます。

    3. VF ドライバーは、 OID_SRIOV_VF_INVALIDATE_CONFIG_BLOCK 要求を処理すると、指定された VF 構成ブロックからデータを読み取ります。
シングル ルート I/O 仮想化 (SR-IOV) インターフェイス内のバックチャネル通信の詳細については、「 SR-IOV PF/VF バックチャネル通信」を参照してください。

SR-IOV インターフェイスの詳細については、「 単一ルート I/O 仮想化の概要 (SR-IOV)」を参照してください。

要件

要件
サポートされている最小のクライアント サポートされていません。NDIS 6.30 以降でサポートされています。
サポートされている最小のサーバー Windows Server 2012
対象プラットフォーム ユニバーサル
Header ndis.h (Ndis.h を含む)
Library Ndis.lib
IRQL <= DISPATCH_LEVEL

こちらもご覧ください

IOCTL_VPCI_INVALIDATE_BLOCK

NDIS_SRIOV_VF_INVALIDATE_CONFIG_BLOCK_INFO

OID_SRIOV_READ_VF_CONFIG_SPACE

VPCI_INVALIDATE_BLOCK_OUTPUT