Freigeben über


OID_SRIOV_VF_INVALIDATE_CONFIG_BLOCK

NDIS gibt eine OID-Methodenanforderung (Object Identifier) von OID_SRIOV_VF_INVALIDATE_CONFIG_BLOCK aus, um den Miniporttreiber über eine PCI Express (PCIe) Virtual Function (VF) zu benachrichtigen, dass sich Daten in einem oder mehreren Konfigurationsblöcken geändert haben. NDIS gibt diese OID aus, wenn der Miniporttreiber für eine PHYSISCHE PCIe-Funktion (PF) NdisMInvalidateConfigBlock aufruft.

Das InformationBuffer-Element der NDIS_OID_REQUEST-Struktur enthält einen Zeiger auf eine NDIS_SRIOV_VF_INVALIDATE_CONFIG_BLOCK_INFO-Struktur . Diese Struktur gibt einen oder mehrere VF-Konfigurationsblöcke (Virtual Function) an, deren Daten vom PF-Miniporttreiber geändert (ungültig) wurden.

Bemerkungen

Ein VF-Konfigurationsblock wird für die Backchannelkommunikation zwischen den PF- und VF-Miniporttreibern verwendet. Die IHV kann einen oder mehrere VF-Konfigurationsblöcke für das Gerät definieren. Jeder VF-Konfigurationsblock hat ein IHV-definiertes Format, eine länge und eine Block-ID.

Hinweis Daten aus jedem VF-Konfigurationsblock werden nur von den PF- und VF-Miniporttreibern verwendet.

VF-Konfigurationsdaten werden zwischen den folgenden Treibern ausgetauscht:

  • Der VF-Treiber, der im Gastbetriebssystem ausgeführt wird. Dieses Betriebssystem wird in einer untergeordneten Hyper-V-Partition ausgeführt.

  • Der PF-Treiber, der im Verwaltungsbetriebssystem ausgeführt wird. Dieses Betriebssystem wird innerhalb der übergeordneten Hyper-V-Partition ausgeführt.

Um Benachrichtigungen über ungültige VF-Konfigurationsdaten zu verarbeiten, führen NDIS und die Miniporttreiber die folgenden Schritte aus:

  1. Im Gastbetriebssystem gibt NDIS eine E/A-Steuerungsanforderung von IOCTL_VPCI_INVALIDATE_BLOCK-Anforderung aus. Wenn diese IOCTL abgeschlossen ist, wird NDIS benachrichtigt, dass sich die VF-Konfigurationsdaten geändert haben.

  2. Im Verwaltungsbetriebssystem werden die folgenden Schritte ausgeführt:

    1. Der PF-Miniporttreiber ruft die NdisMInvalidateConfigBlock-Funktion auf, um NDIS zu benachrichtigen, dass SICH DIE VF-Konfigurationsdaten geändert haben und nicht mehr gültig sind. Der Treiber legt den BlockMask-Parameter auf eine ULONGLONGLONG-Bitmaske fest, die angibt, welche VF-Konfigurationsblöcke geändert wurden. Jedes Bit in der Bitmaske entspricht einem VF-Konfigurationsblock. Wenn das Bit auf eins festgelegt ist, haben sich die Daten im entsprechenden VF-Konfigurationsblock geändert.

    2. NDIS signalisiert dem Virtualisierungsstapel, der im Verwaltungsbetriebssystem ausgeführt wird, die Änderung an VF-Konfigurationsblockdaten. Der Virtualisierungsstapel speichert die BlockMask-Parameterdaten zwischen.

      Hinweis Jedes Mal, wenn der PF-Miniporttreiber NdisMInvalidateConfigBlock aufruft, verwendet der Virtualisierungsstapel die BlockMask-Parameterdaten mit dem aktuellen Wert im Cache.

    3. Der Virtualisierungsstapel benachrichtigt den virtuellen PCI-Treiber (VPCI), der im Gastbetriebssystem ausgeführt wird, über die Ungültigkeit von VF-Konfigurationsdaten. Der Virtualisierungsstapel sendet die zwischengespeicherten BlockMask-Parameterdaten an den VPCI-Treiber.

  3. Im Gastbetriebssystem werden die folgenden Schritte ausgeführt:

    1. Der VPCI-Treiber speichert die zwischengespeicherten BlockMask-Parameterdaten im BlockMask-Member der VPCI_INVALIDATE_BLOCK_OUTPUT-Struktur , die der IOCTL_VPCI_INVALIDATE_BLOCK-Anforderung zugeordnet ist.

    2. Der VPCI-Treiber schließt die IOCTL_VPCI_INVALIDATE_BLOCK Anforderung erfolgreich ab. In diesem Fall gibt NDIS eine OID-Methodenanforderung von OID_SRIOV_VF_INVALIDATE_CONFIG_BLOCK an den VF-Miniporttreiber aus. In der OID-Anforderung wird ein NDIS_SRIOV_VF_INVALIDATE_CONFIG_BLOCK_INFO übergeben. Diese Struktur enthält die zwischengespeicherten BlockMask-Parameterdaten .

      NDIS stellt außerdem eine weitere IOCTL_VPCI_INVALIDATE_BLOCK-Anforderung zur Verarbeitung aufeinander folgender Benachrichtigungen über Änderungen an VF-Konfigurationsdaten.

    3. Wenn der VF-Treiber die OID_SRIOV_VF_INVALIDATE_CONFIG_BLOCK-Anforderung verarbeitet, liest er Daten aus den angegebenen VF-Konfigurationsblöcken.

Weitere Informationen zur Backchannelkommunikation innerhalb der SR-IOV-Schnittstelle (Single Root I/O Virtualization) finden Sie unter SR-IOV PF/VF Backchannel Communication.

Zurückgeben von Statuscodes

Der Miniporttreiber gibt einen der folgenden status Codes für die OID-Methodenanforderung von OID_SRIOV_VF_INVALIDATE_CONFIG_BLOCK zurück.

Statuscode BESCHREIBUNG

NDIS_STATUS_SUCCESS

Die OID-Anforderung wurde erfolgreich abgeschlossen.

NDIS_STATUS_NOT_SUPPORTED

Der Miniporttreiber unterstützt entweder nicht die SR-IOV-Schnittstelle (Single Root I/O Virtualization) oder ist nicht für die Verwendung der Schnittstelle aktiviert.

NDIS_STATUS_INVALID_PARAMETER

Mindestens ein Member der NDIS_SRIOV_VF_INVALIDATE_CONFIG_BLOCK_INFO-Struktur hat ungültige Werte.

NDIS_STATUS_INVALID_LENGTH

Der Informationspuffer war zu kurz. NDIS legt die DATEN fest. SET_INFORMATION. BytesNeeded-Member in der NDIS_OID_REQUEST-Struktur auf die Größe der NDIS_SRIOV_VF_INVALIDATE_CONFIG_BLOCK_INFO-Struktur .

NDIS_STATUS_FAILURE

Die Anforderung ist aus anderen Gründen fehlgeschlagen.

Requirements (Anforderungen)

Version

Unterstützt in NDIS 6.30 und höher.

Header

Ntddndis.h (include Ndis.h)

Weitere Informationen


IOCTL_VPCI_INVALIDATE_BLOCK

NDIS_OID_REQUEST

NDIS_SRIOV_VF_INVALIDATE_CONFIG_BLOCK_INFO

NdisMInvalidateConfigBlock

OID_SRIOV_READ_VF_CONFIG_SPACE

VPCI_INVALIDATE_BLOCK_OUTPUT