Anhalten eines PF-Miniporttreibers

In diesem Thema werden die Schritte erläutert, die mit dem Anhalten des Miniporttreibers für eine PCI Express (PCIe) Physical Function (PF) auf einem Adapter verbunden sind, der single root E/O Virtualization (SR-IOV) unterstützt. Diese Schritte sind in der folgenden Abbildung dargestellt.

Diagramm, das den Prozess des Anhaltens eines PF-Miniporttreibers zeigt, der den Fluss von Anforderungen und Funktionen zwischen dem überladenden Treiber, dem NDIS und dem PF-Miniporttreiber veranschaulicht.

Dieses Thema enthält folgende Informationen:

Von NDIS ausgeführte Aktionen und Überlastung von Treibern, bevor MiniportHaltEx aufgerufen wird

Bevor NDIS die MiniportHaltEx-Funktion des PF-Miniporttreibers aufruft, führt es zunächst Folgendes aus:

  • NDIS hebt die Bindung aller Protokolltreiber auf, die zuvor an den zugrunde liegenden PF-Miniporttreiber gebunden waren. Dazu ruft NDIS die ProtocolUnbindAdapterEx-Funktion des Protokolltreibers auf.

  • NDIS trennt alle Filtertreiber, die zuvor an den zugrunde liegenden PF-Miniporttreiber gebunden waren. Dazu ruft NDIS die FilterDetach-Funktion des Filtertreibers auf.

Wenn ein überlastendes Protokoll oder Filtertreiber ungebunden oder vom PF-Miniporttreiber getrennt wird, müssen die folgenden Schritte ausgeführt werden:

  1. Der Treiber muss eine OID-Set-Anforderung (Object Identifier) von OID_RECEIVE_FILTER_CLEAR_FILTER ausgeben, um alle zuvor festgelegten Empfangsfilter zu löschen. Der Treiber legt diese Filter für den virtuellen Standardport (VPort) oder alle nicht standardmäßigen VPorts des NIC-Switches auf dem Netzwerkadapter fest. Der Treiber legt diese Filter fest, indem er OID-Methodenanforderungen von OID_RECEIVE_FILTER_SET_FILTER an den PF-Miniporttreiber ausgibt.

  2. Der Treiber muss eine OID-Set-Anforderung von OID_NIC_SWITCH_DELETE_VPORT ausstellen, um alle nicht standardmäßigen VPorts zu löschen, die er zuvor auf dem NIC-Switch erstellt hat. Der Treiber legt diese VPorts fest, indem er OID-Methodenanforderungen von OID_NIC_SWITCH_CREATE_VPORT an den PF-Miniporttreiber ausgibt.

  3. Der Treiber muss eine OID-Set-Anforderung von OID_NIC_SWITCH_FREE_VF ausstellen, um die Ressourcen für alle PCIe Virtual Functions (VFs) freizugeben, die er zuvor auf dem NIC-Switch zugewiesen hat. Der Treiber weist Ressourcen für den VF zu, indem er OID-Methodenanforderungen von OID_NIC_SWITCH_ALLOCATE_VF an den PF-Miniporttreiber ausgibt.

    Weitere Informationen finden Sie unter Freigeben von Ressourcen für eine virtuelle Funktion.

    Hinweis Wenn Ressourcen für den VF freigegeben werden, ruft NDIS die MiniportHaltEx-Funktion des VF-Miniporttreibers auf. Weitere Informationen finden Sie unter Anhalten eines VF-Miniporttreibers.

Nachdem alle Empfangsfilter, nicht standardmäßige VPorts und VFs aus dem NIC-Switch gelöscht wurden, führt NDIS die folgenden Schritte aus:

  • NDIS löscht alle NIC-Switches, indem OID-Set-Anforderungen von OID_NIC_SWITCH_DELETE_SWITCH an den PF-Miniporttreiber ausgegeben werden. Weitere Informationen zum Löschen eines NIC-Switches finden Sie unter Löschen eines NIC-Switches.

    Hinweis Ab Windows Server 2012 unterstützt die SR-IOV-Schnittstelle nur den Standard-NIC-Switch auf dem Netzwerkadapter.

  • Nachdem alle NIC-Switches erfolgreich gelöscht wurden, ruft NDIS die MiniportHaltEx-Funktion des PF-Miniporttreibers auf.

Aktionen, die vom PF-Miniporttreiber ausgeführt werden, wenn MiniportHaltEx aufgerufen wird

Wenn NDIS MiniportHaltEx aufruft, muss der PF-Miniporttreiber die folgenden Schritte ausführen:

  1. Wenn der PF-Miniporttreiber die statische Erstellung von NIC-Switches unterstützt und alle NIC-Switches gelöscht wurden, muss der Treiber die Virtualisierung auf dem Adapter deaktivieren, indem er NdisMEnableVirtualization aufruft , wobei der EnableVirtualization-Parameter auf FALSE und der NumVFs-Parameter auf Null festgelegt ist.

    NdisMEnableVirtualization löscht den NumVFs-Member und das VF Enable-Bit in der SR-IOV Extended Capability-Struktur im PCIe-Konfigurationsraum der PF des Netzwerkadapters.

    Hinweis Wenn der PF-Miniporttreiber die dynamische Erstellung und Konfiguration von NIC-Switches unterstützt, muss er NdisMEnableVirtualization aufrufen, wenn der Treiber die OID-Setanforderung von OID_NIC_SWITCH_DELETE_SWITCH verarbeitet. Diese OID-Anforderung wird ausgestellt, bevor MiniportHaltEx aufgerufen wird.

  2. Der PF-Miniporttreiber führt die anderen Aufgaben aus, die einem Miniportstoppvorgang zugeordnet sind. Weitere Informationen finden Sie unter Anhalten eines Miniportadapters.