建立虛擬 PCI(VPCI)裝置並將其資源分配到分割區。
語法
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
handle 轉到 partition 物件。
LogicalDeviceId
指定分割區內裝置的唯一識別碼。
VpciResource
處理到先前分配的 VPCI 資源,該資源支援虛擬裝置。 從 取得此帳號 WHvAllocateVpciResource。
Flags
指定裝置的可選特性,作為數值組合 WHV_CREATE_VPCI_DEVICE_FLAGS 而成。
NotificationEventHandle
指定一個可選的事件句柄,該用以通知呼叫者與 VPCI 裝置相關的非同步事件。 當事件被通知時,請用 WHvGetVpciDeviceNotification取得待處理通知。
傳回值
如果函式成功,則傳回值為 S_OK。
Remarks
該函式建立 WHvCreateVpciDevice 虛擬 PCI 裝置,並將所 VpciResource 識別的實體或虛擬資源指派至分割區。 呼叫完成後,IOMMU 會被設定為將支援裝置的實體或虛擬功能的 PCI 請求 ID 指派到分割區域,將來自該函式的 DMA 操作重新映射到分割區的位址空間。
在呼叫此函式前,先配置資源 WHvAllocateVpciResource 。 裝置建立後,將 映射 WHvMapVpciDeviceMmioRanges 為 的 MMIO 範圍,映射為 WHvMapVpciDeviceInterrupt的中斷。 用 摧毀裝置 WHvDeleteVpciDevice。
Requirements
| 需求 | 價值 |
|---|---|
| 最低支援的 Windows | Windows 10,版本 20H2(x64);Windows 11,版本 24H2,建置版 26100.3915(Arm64) |
| Header | WinHvPlatform.h |
| 圖書館 | WinHvPlatform.lib |
| DLL | WinHvPlatform.dll |
| Architecture | x64、Arm64 |