PF ミニポート ドライバーの停止

このトピックでは、シングル ルート I/O 仮想化 (SR-IOV) をサポートするアダプターの PCI Express (PCIe) 物理関数 (PF) の、ミニポート ドライバーの停止に関連する手順について説明します。 これらのステップを次の図に示します。

Diagram that shows the process of halting a PF Miniport Driver, illustrating the flow of requests and functions between the overlying driver, NDIS, and the PF miniport driver.

このトピックの内容は次のとおりです。

MiniportHaltEx が呼び出される前に NDIS および基になるドライバーによって実行されるアクション

NDIS は、PF ミニポート ドライバーの MiniportHaltEx 関数を呼び出す前に、最初に次の操作を行います:

  • NDIS は、基になる PF ミニポート ドライバーに以前にバインドされているすべてのプロトコル ドライバーをバインド解除します。 NDIS は、プロトコル ドライバー の ProtocolUnbindAdapterEx 関数を呼び出してこれを行います。

  • NDIS は、基になる PF ミニポート ドライバーに以前にバインドされているすべてのフィルター ドライバーをデタッチします。 NDIS は、フィルター ドライバーの FilterDetach 関数を呼び出してこれを行います。

基になるプロトコルまたはフィルター ドライバーがバインド解除または PF ミニポート ドライバーからデタッチされている場合は、次の手順に従う必要があります:

  1. ドライバーは、以前に設定した受信フィルターをクリアするには、OID_RECEIVE_FILTER_CLEAR_FILTER のオブジェクト識別子 (OID) セット要求を発行する必要があります。 ドライバーは、既定の仮想ポート (VPort) またはネットワーク アダプター上の NIC スイッチの既定以外の VPort にこれらのフィルターを設定します。 ドライバーは、PF ミニポート ドライバーに OID_RECEIVE_FILTER_SET_FILTER の OID メソッド要求を発行して、これらのフィルターを設定します。

  2. ドライバーは、NIC スイッチで以前に作成した既定以外の VPort を削除するには、OID_NIC_SWITCH_DELETE_VPORT の OID セット要求を発行する必要があります。 ドライバーは、PF ミニポート ドライバーに OID_NIC_SWITCH_CREATE_VPORT の OID メソッド要求を発行して、これらの VPort を設定します。

  3. ドライバーは、以前に NIC スイッチに割り当てた PCIe 仮想関数 (VFs) のリソースを解放するには、OID_NIC_SWITCH_FREE_VF の OID セット要求を発行する必要があります。 ドライバーは、PF ミニポート ドライバーに OID_NIC_SWITCH_ALLOCATE_VF の OID メソッド要求を発行して、VF のリソースを割り当てます。

    詳細については、「仮想関数のリソースの解放」を参照してください。

    メモ VF のリソースが解放されると、NDIS は VF ミニポート ドライバーの MiniportHaltEx 関数を呼び出します。 詳細については、「VF ミニポート ドライバーの停止」を参照してください。

すべての受信フィルター、既定以外の VPort、VFs が NIC スイッチから削除された後、NDIS は次の手順に従います:

  • NDIS は、PF ミニポート ドライバーに OID_NIC_SWITCH_DELETE_SWITCH の OID セット要求を発行して、すべての NIC スイッチを削除します。 NIC スイッチの削除方法の詳細については、「NIC スイッチの削除」を参照してください。

    Windows Server 2012 以降では、SR-IOV インターフェイスは、ネットワーク アダプターの既定の NIC スイッチのみをサポートします。

  • すべての NIC スイッチが正常に削除されると、NDIS は PF ミニポート ドライバーの MiniportHaltEx 関数を呼び出します。

MiniportHaltEx が呼び出されたときに PF ミニポート ドライバーによって実行されるアクション

NDIS が MiniportHaltEx を呼び出すとき、PF ミニポート ドライバーは、次の手順に従う必要があります:

  1. PF ミニポート ドライバーが NIC スイッチの静的な作成をサポートし、すべての NIC スイッチが削除されている場合、ドライバーは、EnableVirtualization パラメーターを FALSE に設定し、NumVFs パラメーターをゼロに設定して、NdisMEnableVirtualization を呼び出すことにより、アダプターの仮想化を無効にする必要があります。

    NdisMEnableVirtualization は、ネットワーク アダプターの PF の PCIe 構成スペースの SR-IOV 拡張機能構造の NumVFs メンバーと VF Enable ビットをクリアします。

    メモ PF ミニポート ドライバーが NIC スイッチの動的な作成と構成をサポートしている場合は、ドライバーが OID_NIC_SWITCH_DELETE_SWITCH の OID セット要求を処理するときに NdisMEnableVirtualization を呼び出す必要があります。 この OID 要求は MiniportHaltEx が呼び出される前に発行されます。

  2. PF ミニポート ドライバーは、ミニポート停止操作に関連付けられている他のタスクを実行します。 詳細については、「ミニポート アダプターの停止」を参照してください。