WHvMapVpciDeviceMmioRanges

Сопоставляет диапазоны MMIO виртуального устройства PCI (VPCI) с процессом вызывающего объекта.

Синтаксис

typedef enum WHV_VPCI_DEVICE_REGISTER_SPACE
{
    WHvVpciConfigSpace = -1,
    WHvVpciBar0 = 0,
    WHvVpciBar1 = 1,
    WHvVpciBar2 = 2,
    WHvVpciBar3 = 3,
    WHvVpciBar4 = 4,
    WHvVpciBar5 = 5
} WHV_VPCI_DEVICE_REGISTER_SPACE;

typedef enum WHV_VPCI_MMIO_RANGE_FLAGS
{
    WHvVpciMmioRangeFlagReadAccess = 0x00000001,
    WHvVpciMmioRangeFlagWriteAccess = 0x00000002
} WHV_VPCI_MMIO_RANGE_FLAGS;

// Enables bitwise operators on the WHV_VPCI_MMIO_RANGE_FLAGS enumeration.
DEFINE_ENUM_FLAG_OPERATORS(WHV_VPCI_MMIO_RANGE_FLAGS);

typedef struct WHV_VPCI_MMIO_MAPPING
{
    WHV_VPCI_DEVICE_REGISTER_SPACE Location;
    WHV_VPCI_MMIO_RANGE_FLAGS Flags;
    UINT64 SizeInBytes;
    UINT64 OffsetInBytes;
    PVOID VirtualAddress;
} WHV_VPCI_MMIO_MAPPING;

HRESULT
WINAPI
WHvMapVpciDeviceMmioRanges(
    _In_ WHV_PARTITION_HANDLE Partition,
    _In_ UINT64 LogicalDeviceId,
    _Out_ UINT32* MappingCount,
    _Outptr_result_buffer_(*MappingCount) WHV_VPCI_MMIO_MAPPING** Mappings
    );

Parameters

Partition

Обработайте секцию, которая владеет устройством VPCI.

LogicalDeviceId

Указывает идентификатор логического устройства устройства VPCI.

MappingCount

Получает количество элементов в возвращаемом Mappings массиве.

Mappings

Получает указатель на массив WHV_VPCI_MMIO_MAPPING элементов, описывающих сопоставленные диапазоны MMIO.

Возвращаемое значение

Если функция выполнена успешно, возвращается S_OKзначение.

Remarks

Функция WHvMapVpciDeviceMmioRanges сопоставляет физические диапазоны MMIO, связанные с устройством VPCI, в виртуальное адресное пространство процесса вызывающего объекта. Устройство должно находиться в состоянии питания D0; задайте для состояния питания значение WHvSetVpciDevicePowerState.

Каждый доступный базовый регистр адресов (BAR) представлен одним или несколькими записями в массиве Mappings . Записи в основном отсортированы по BAR. Записи для одной и той же панели отсортированы по смещением, не перекрываются и охватывают весь размер панели без промежуточных пробелов. Каждая запись определяет под диапазон bar, начиная с указанного смещения от базового адреса и указанной длины, виртуальный адрес, с которым сопоставляется под диапазон, и уровень доступа, предоставленный процессу вызывающего объекта.

Возвращаемый массив остается допустимым, пока вызывающий объект не скажет диапазоны MMIO устройства, WHvUnmapVpciDeviceMmioRangesотключает устройство с WHvSetVpciDevicePowerStateустройством или уничтожает устройство с WHvDeleteVpciDeviceпомощью.

Требования

Requirement Ценность
Минимальный поддерживаемый Windows Windows 10 версии 20H2 (x64); Windows 11 версии 24H2, сборка 26100.3915 (Arm64)
Header WinHvPlatform.h
Библиотека WinHvPlatform.lib
DLL WinHvPlatform.dll
Architecture x64, Arm64

См. также