仮想ポートの削除
上にあるドライバーは、ネットワーク アダプターの NIC スイッチの既定以外の仮想ポート (VPort) を削除する OID_NIC_SWITCH_DELETE_VPORT のオブジェクト識別子 (OID) セット要求を発行します。 上にあるドライバーは、 OID_NIC_SWITCH_CREATE_VPORT の OID メソッド要求を発行することによって、以前に作成した VPort のみを削除できます。
NDIS_OID_REQUEST 構造体の InformationBuffer メンバーには、 NDIS_NIC_SWITCH_DELETE_VPORT_PARAMETERS 構造体を指すポインターが含まれています。
仮想化スタックなどの上にあるドライバーは、以前に作成した既定以外の VPort を削除できます。 上部のドライバーは、 OID_NIC_SWITCH_CREATE_VPORT の OID メソッド要求を発行して、 VPort を作成します。
OID_NIC_SWITCH_DELETE_VPORT の OID セット要求を発行する前に、上にあるドライバーで次の操作を行う必要があります。
上にあるドライバーは、VPort を削除する前に、ドライバーが以前に VPort に設定したすべての受信フィルターをクリアまたは移動する必要があります。 受信フィルターは OID_RECEIVE_FILTER_SET_FILTER の OID 要求を通じて設定され、 OID_RECEIVE_FILTER_MOVE_FILTER の OID 要求を介して移動されます。
上にあるドライバーは、 NDIS_NIC_SWITCH_DELETE_VPORT_PARAMETERS 構造体の VPortId メンバーを、削除する既定以外の VPort の識別子に設定します。
注 上にあるドライバーは、 VPortId メンバーを NDIS_DEFAULT_PORT_NUMBER に設定することはできません。 この VPort 識別子は、ネットワーク アダプター上の PCI Express (PCIe) 物理機能 (PF) に接続されている既定の VPort 用に予約されています。 既定の VPort は常に存在し、 OID_NIC_SWITCH_DELETE_VPORT の OID セット要求では明示的に削除されません。
上にあるドライバーは、下にある PF ミニポート ドライバーに OID_NIC_SWITCH_DELETE_VPORT 要求を発行する NdisOidRequest を呼び出します。 ミニポート ドライバーは、OID_NIC_SWITCH_DELETE_VPORT 要求を受信すると、ドライバーは、次の操作を行う必要があります。
ドライバーは、指定された VPort に割り当てられたハードウェア リソースとソフトウェア リソースを解放する必要があります。
ドライバーは、PF または PCIe 仮想関数 (VF) から指定された VPort をデタッチする必要があります。
VPort が VF に接続されている場合、仮想化スタックは、ゲスト オペレーティング システムで実行されている VF ミニポート ドライバーが以前に一時停止され、停止していることを確認します。 その結果、以前に示されたすべての VPort からの受信パケットが VF ミニポート ドライバーに返されるはずです。
VPort が PF に接続されている場合、PF ミニポート ドライバーは、VPort に関連付けられている共有メモリへの追加 DMA を停止する必要があります。 PF ミニポート ドライバーは、VPort から以前に割り当てられたすべての受信パケットがミニポートに返されることを確認する必要があります。 PF ミニポート ドライバーは、パケットの NET_BUFFER_LIST 構造体で VPort の識別子を指定する NDIS に追加の受信指示を行うことはできません。 VPort からの指定されたすべての受信パケットが PF ミニポート ドライバーに返された後、 NdisFreeSharedMemory を呼び出すことによって、VPort に関連付けられている共有メモリを解放する必要があります。
VPort の削除には、次のポイントが適用されます。
上にあるプロトコル ドライバーは、 NdisCloseAdapterEx を呼び出す前に作成したすべての既定以外の VPort を削除する必要があります。
上にあるフィルター ドライバーは、 FilterDetach 関数内で作成したすべての既定以外の VPort を削除する必要があります。
NDIS がネットワーク アダプターの NIC スイッチを削除する OID_NIC_SWITCH_DELETE_SWITCH のセット要求を発行する前に、既定以外のすべての VPort がそのスイッチから削除されることを保証します。
OID_NIC_SWITCH_DELETE_SWITCH の OID 要求を使用して明示的に削除できるのは、既定以外の VPorts だけです。 既定の VPort は、PF ミニポート ドライバーが既定の NIC スイッチを削除するときに暗黙的に削除されます。 詳細については、「NIC スイッチの削除」を参照してください。