Udostępnij za pośrednictwem


OID_SRIOV_VF_INVALIDATE_CONFIG_BLOCK

Usługa NDIS wysyła żądanie metody identyfikatora obiektu (OID) OID_SRIOV_VF_INVALIDATE_CONFIG_BLOCK w celu powiadomienia miniportatora funkcji wirtualnej PCI Express (PCIe) o zmianie danych w co najmniej jednym bloku konfiguracji. NDIS wystawia ten identyfikator OID, gdy sterownik miniportu dla funkcji fizycznej PCIe (PF) wywołuje NdisMInvalidateConfigBlock.

Element InformationBuffer struktury NDIS_OID_REQUEST zawiera wskaźnik do struktury NDIS_SRIOV_VF_INVALIDATE_CONFIG_BLOCK_INFO. Ta struktura określa co najmniej jeden blok konfiguracji funkcji wirtualnej (VF), którego dane zostały zmienione (unieważnione) przez sterownik miniport PF.

Uwagi

Blok konfiguracji VF jest używany do komunikacji backchannel między sterownikami PF i VF miniport. IHV może zdefiniować jeden lub więcej bloków konfiguracji VF dla urządzenia. Każdy blok konfiguracji VF ma zdefiniowany format, długość i identyfikator bloku IHV.

Uwaga Dane z każdego bloku konfiguracji VF są używane tylko przez sterowniki PF i VF miniport.

Dane konfiguracji VF są wymieniane między następującymi sterownikami:

  • Sterownik VF, który działa w systemie operacyjnym gościa. Ten system operacyjny działa w ramach partycji podrzędnej Hyper-V.

  • Sterownik PF, który działa w systemie operacyjnym zarządzania. Ten system operacyjny działa w ramach partycji nadrzędnej Hyper-V.

Aby obsłużyć powiadomienia o nieprawidłowych danych konfiguracji VF, NDIS i sterowniki miniportu wykonaj następujące kroki:

  1. W systemie operacyjnym gościa usługa NDIS wysyła żądanie kontroli we/wy żądania IOCTL_VPCI_INVALIDATE_BLOCK. Po zakończeniu tego protokołu IOCTL usługa NDIS jest powiadamiana o zmianie danych konfiguracji programu VF.

  2. W systemie operacyjnym zarządzania są wykonywane następujące kroki:

    1. Sterownik miniportu PF wywołuje funkcję NdisMInvalidateConfigBlock, aby powiadomić NDIS, że dane konfiguracji programu VF uległy zmianie i nie są już prawidłowe. Sterownik ustawia parametr BlockMask na maskę bitów ULONGLONG, która określa, które bloki konfiguracji VF zostały zmienione. Każdy bit maski bitów odpowiada blokowi konfiguracji VF. Jeśli bit jest ustawiony na jeden, dane w odpowiednim bloku konfiguracji VF uległy zmianie.

    2. Usługa NDIS sygnalizuje stos wirtualizacji, który działa w systemie operacyjnym zarządzania o zmianie danych bloku konfiguracji programu VF. Stos wirtualizacji buforuje dane parametrów BlockMask.

      Uwaga Za każdym razem, gdy sterownik miniportu PF wywołuje NdisMInvalidateConfigBlock, stos wirtualizacji BlockMask dane parametrów z bieżącą wartością w pamięci podręcznej.

    3. Stos wirtualizacji powiadamia wirtualny sterownik PCI (VPCI), który działa w systemie operacyjnym gościa, o unieważnieniu danych konfiguracji VF. Stos wirtualizacji wysyła buforowane dane parametrów BlockMask do sterownika VPCI.

  3. W systemie operacyjnym Gościa są wykonywane następujące kroki:

    1. Sterownik VPCI zapisuje buforowane dane parametrów BlockMask w BlockMask składowej struktury VPCI_INVALIDATE_BLOCK_OUTPUT skojarzonej z żądaniem IOCTL_VPCI_INVALIDATE_BLOCK.

    2. Sterownik VPCI pomyślnie ukończy żądanie IOCTL_VPCI_INVALIDATE_BLOCK. W takim przypadku usługa NDIS wysyła żądanie metody OID OID_SRIOV_VF_INVALIDATE_CONFIG_BLOCK do sterownika miniportu VF. NDIS_SRIOV_VF_INVALIDATE_CONFIG_BLOCK_INFO jest przekazywany w żądaniu OID. Ta struktura zawiera buforowane dane parametrów BlockMask.

      Usługa NDIS wysyła również kolejne żądanie IOCTL_VPCI_INVALIDATE_BLOCK do obsługi kolejnych powiadomień o zmianach w danych konfiguracji programu VF.

    3. Gdy sterownik VF obsługuje żądanie OID_SRIOV_VF_INVALIDATE_CONFIG_BLOCK, odczytuje dane z określonych bloków konfiguracji VF.

Aby uzyskać więcej informacji na temat komunikacji zaplecza w ramach interfejsu wirtualizacji we/wy pojedynczego katalogu głównego (SR-IOV), zobacz SR-IOV PF/VF Backchannel Communication.

Kody stanu powrotu

Sterownik miniportu zwraca jeden z następujących kodów stanu dla żądania metody OID OID_SRIOV_VF_INVALIDATE_CONFIG_BLOCK.

Kod stanu Opis

NDIS_STATUS_SUCCESS

Żądanie OID zostało ukończone pomyślnie.

NDIS_STATUS_NOT_SUPPORTED

Sterownik miniportu nie obsługuje interfejsu wirtualizacji we/wy pojedynczego katalogu głównego (SR-IOV) lub nie jest włączony do korzystania z interfejsu.

NDIS_STATUS_INVALID_PARAMETER

Co najmniej jeden z elementów członkowskich struktury NDIS_SRIOV_VF_INVALIDATE_CONFIG_BLOCK_INFO ma nieprawidłowe wartości.

NDIS_STATUS_INVALID_LENGTH

Bufor informacyjny był zbyt krótki. Usługa NDIS ustawia DATA. SET_INFORMATION. BytesNeeded elementu członkowskiego w strukturze NDIS_OID_REQUEST do rozmiaru struktury NDIS_SRIOV_VF_INVALIDATE_CONFIG_BLOCK_INFO.

NDIS_STATUS_FAILURE

Żądanie nie powiodło się z innych powodów.

Wymagania

Wersja

Obsługiwane w usłudze NDIS 6.30 i nowszych wersjach.

Nagłówek

Ntddndis.h (m.in. Ndis.h)

Zobacz też


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