WHvMapVpciDeviceMmioRanges

VPCI(가상 PCI) 디바이스의 MMIO 범위를 호출자의 프로세스에 매핑합니다.

문법

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

매핑된 MMIO 범위를 설명하는 요소 배열 WHV_VPCI_MMIO_MAPPING 에 대한 포인터를 받습니다.

반환 값

함수가 성공하면 반환 값은 .입니다 S_OK.

Remarks

이 함수는 WHvMapVpciDeviceMmioRanges VPCI 디바이스와 연결된 실제 MMIO 범위를 호출자 프로세스의 가상 주소 공간에 매핑합니다. 디바이스는 D0 전원 상태여야 합니다. 을 사용하여 전원 상태를 WHvSetVpciDevicePowerState설정합니다.

사용 가능한 각 BAR(기본 주소 레지스터)는 배열에서 Mappings 하나 이상의 항목으로 표시됩니다. 항목은 주로 BAR별로 정렬됩니다. 동일한 BAR에 대한 항목은 오프셋별로 정렬되고, 겹치지 않으며, 중간 간격 없이 BAR의 전체 크기를 덮습니다. 각 항목은 기준 주소와 지정된 길이의 지정된 오프셋부터 시작하여 BAR의 하위 범위를 식별하며, 하위 범위가 매핑되는 가상 주소 및 호출자의 프로세스에 부여된 액세스 수준을 식별합니다.

반환된 배열은 호출자가 디바이스의 MMIO 범위 WHvUnmapVpciDeviceMmioRanges의 매핑을 해제하거나, 디바이스 WHvSetVpciDevicePowerState에서 전원을 끄거나, 디바이스 WHvDeleteVpciDevice를 삭제할 때까지 유효합니다.

Requirements

요구 사항 Value
지원되는 최소 Windows Windows 10, 버전 20H2(x64); Windows 11 버전 24H2, 빌드 26100.3915(Arm64)
Header WinHvPlatform.h
라이브러리 WinHvPlatform.lib
동적 링크 라이브러리 (DLL) WinHvPlatform.dll
아키텍처 x64, Arm64

참고하십시오