VPCI(가상 PCI) 디바이스를 만들고 해당 리소스를 파티션에 할당합니다.
문법
typedef enum WHV_CREATE_VPCI_DEVICE_FLAGS
{
WHvCreateVpciDeviceFlagNone = 0x00000000,
WHvCreateVpciDeviceFlagPhysicallyBacked = 0x00000001,
WHvCreateVpciDeviceFlagUseLogicalInterrupts = 0x00000002
} WHV_CREATE_VPCI_DEVICE_FLAGS;
// Enables bitwise operators on the WHV_CREATE_VPCI_DEVICE_FLAGS enumeration.
DEFINE_ENUM_FLAG_OPERATORS(WHV_CREATE_VPCI_DEVICE_FLAGS);
HRESULT
WINAPI
WHvCreateVpciDevice(
_In_ WHV_PARTITION_HANDLE Partition,
_In_ UINT64 LogicalDeviceId,
_In_ HANDLE VpciResource,
_In_ WHV_CREATE_VPCI_DEVICE_FLAGS Flags,
_In_opt_ HANDLE NotificationEventHandle
);
Parameters
Partition
파티션 개체에 대한 핸들입니다.
LogicalDeviceId
파티션 범위 내에서 디바이스에 대한 고유 식별자를 지정합니다.
VpciResource
가상 디바이스를 백업하는 이전에 할당된 VPCI 리소스를 처리합니다. 에서 이 핸들을 WHvAllocateVpciResource가져옵니다.
Flags
만들 디바이스의 선택적 특성을 값의 WHV_CREATE_VPCI_DEVICE_FLAGS 조합으로 지정합니다.
NotificationEventHandle
VPCI 디바이스와 연결된 비동기 이벤트를 호출자에게 알리도록 신호를 받은 이벤트에 대한 선택적 핸들을 지정합니다. 이벤트가 신호를 받으면 .를 사용하여 보류 중인 알림을 검색합니다 WHvGetVpciDeviceNotification.
반환 값
함수가 성공하면 반환 값은 .입니다 S_OK.
Remarks
이 함수는 WHvCreateVpciDevice 가상 PCI 디바이스를 만들고 파티션에 의해 VpciResource 식별된 물리적 또는 가상 리소스를 할당합니다. 이 호출이 완료되면 디바이스를 지원하는 물리적 또는 가상 함수의 PCI 요청자 ID가 파티션 도메인에 할당되어 해당 함수에서 시작된 모든 DMA 작업을 파티션의 주소 공간으로 다시 매핑하도록 IOMMU가 프로그래밍됩니다.
이 함수를 호출하기 전에 리소스를 WHvAllocateVpciResource 할당합니다. 디바이스를 만든 후 해당 MMIO 범위와 WHvMapVpciDeviceMmioRanges 해당 인터럽트 및 해당 인터럽트는 다음과 같이 WHvMapVpciDeviceInterrupt매핑합니다. 를 사용하여 디바이스 WHvDeleteVpciDevice를 삭제합니다.
Requirements
| 요구 사항 | Value |
|---|---|
| 지원되는 최소 Windows | Windows 10, 버전 20H2(x64); Windows 11 버전 24H2, 빌드 26100.3915(Arm64) |
| Header | WinHvPlatform.h |
| 라이브러리 | WinHvPlatform.lib |
| 동적 링크 라이브러리 (DLL) | WinHvPlatform.dll |
| 아키텍처 | x64, Arm64 |