Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Создает объект триггера, который предоставляет предварительно настроенное прерывание или событие в секцию при сигнале события узла.
Синтаксис
typedef enum WHV_TRIGGER_TYPE
{
#if defined(_AMD64_)
WHvTriggerTypeInterrupt = 0,
#endif
WHvTriggerTypeSynicEvent = 1,
WHvTriggerTypeDeviceInterrupt = 2,
} WHV_TRIGGER_TYPE;
typedef struct WHV_TRIGGER_PARAMETERS
{
WHV_TRIGGER_TYPE TriggerType;
UINT32 Reserved;
union
{
#if defined(_AMD64_)
WHV_INTERRUPT_CONTROL Interrupt;
#endif
WHV_SYNIC_EVENT_PARAMETERS SynicEvent;
struct
{
UINT64 LogicalDeviceId;
UINT64 MsiAddress;
UINT32 MsiData;
UINT32 Reserved;
} DeviceInterrupt;
};
} WHV_TRIGGER_PARAMETERS;
typedef PVOID WHV_TRIGGER_HANDLE;
HRESULT
WINAPI
WHvCreateTrigger(
_In_ WHV_PARTITION_HANDLE Partition,
_In_ const WHV_TRIGGER_PARAMETERS* Parameters,
_Out_ WHV_TRIGGER_HANDLE* TriggerHandle,
_Out_ HANDLE* EventHandle
);
Parameters
Partition
Дескриптор объекта секции.
Parameters
Указывает тип триггера и действие для доставки в секцию. Член TriggerType выбирает, какой член объединения используется: WHvTriggerTypeInterrupt (только x64) использует, WHvTriggerTypeSynicEvent использует InterruptSynicEventи WHvTriggerTypeDeviceInterrupt используетDeviceInterrupt. Полные определения каждого элемента см. в разделе "Типы данных триггеров ".
TriggerHandle
Получает дескриптор созданному объекту триггера. Используйте этот дескриптор для WHvUpdateTriggerParameters перенацеливать триггер и WHvDeleteTrigger удалять его.
EventHandle
Получает дескриптор событий Win32. Вызывающий объект активирует триггер, сигнализируя об этом событии ( например, с SetEvent помощью которого настроенное действие Parameters будет доставлено в секцию. Вызывающий объект владеет этим дескриптором и должен освободить его, если CloseHandle он больше не нужен.
Возвращаемое значение
Если функция выполнена успешно, возвращается S_OKзначение.
Функция возвращает E_INVALIDARG , если параметры недопустимы Parameters для выбранного типа триггера. Для триггера WHvTriggerTypeDeviceInterrupt возвращается HRESULT_FROM_WIN32(ERROR_HV_INVALID_DEVICE_ID)недопустимое LogicalDeviceId значение.
Remarks
Функция WHvCreateTrigger создает объект с областью секционирования, который привязывает событие узла к предварительно настроенного действия гостевого целевого объекта. После создания триггера узел сигнализирует возвращаемым EventHandle ( например, из подпрограммы завершения ввода-вывода или другого потока) для доставки настроенного прерывания или события в секцию, не выполняя отдельный вызов API или гиперкласк для каждой доставки. Благодаря этому триггеры хорошо подходят для сценариев пути к данным, таких как очереди получения виртуальных сетевых адаптеров, кольца завершения хранилища и сигналив канала.
Член TriggerTypeParameters выбирает действие, которое доставляется при сигнале события:
-
WHvTriggerTypeInterrupt(только x64) внедряет виртуальные прерывания, описанныеWHV_INTERRUPT_CONTROLструктурой, — тот же эффект, чтоWHvRequestInterruptи предварительно вооруженный, чтобы его можно было повторно доставлять при каждом сигнале события. -
WHvTriggerTypeSynicEventзадает флаг события контроллера синтетических прерываний (SynIC) на виртуальном процессоре, уровне доверия и SINT с именемWHV_SYNIC_EVENT_PARAMETERSструктуры.TargetVtlдолжен иметь значение VTL 0. -
WHvTriggerTypeDeviceInterruptутверждает прерывание устройства (MSI) для логического устройства, именуемого с помощьюLogicalDeviceIdMsiAddressиMsiData. Логическое устройство уже должно присутствовать в секции и прерывание, сопоставленное , например, черезWHvMapVpciDeviceInterrupt— перед сигналом триггера.
Доставка асинхронна. Несколько сигналов, поступающих до завершения доставки, могут объединиться в одну доставку. Гость должен быть готов к очистке очереди или кольца, который триггер представляет для каждой доставки.
WHvTriggerTypeInterrupt
Interrupt и член WHV_TRIGGER_PARAMETERS доступны только в x64. Только в Arm64 WHvTriggerTypeSynicEvent и WHvTriggerTypeDeviceInterrupt доступны.
Триггер и дескриптор событий имеют независимые время существования. Удаление триггера с WHvDeleteTrigger недопустимым EventHandleзначением; вызывающий объект должен закрыть его с CloseHandleпомощью. Триггеры не сохраняются во время динамической миграции.
Требования
| Requirement | Ценность |
|---|---|
| Минимальный поддерживаемый Windows | Windows 10 версии 20H2 (x64); Windows 11 версии 24H2, сборка 26100.3915 (Arm64) |
| Header | WinHvPlatform.h |
| Библиотека | WinHvPlatform.lib |
| DLL | WinHvPlatform.dll |
| Architecture | x64, Arm64 |