Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Создает порт уведомлений, который сигнализирует объекту события Windows, когда секция создает соответствующее событие doorbell или SynIC.
Синтаксис
typedef enum WHV_NOTIFICATION_PORT_TYPE
{
WHvNotificationPortTypeEvent = 2,
WHvNotificationPortTypeDoorbell = 4,
} WHV_NOTIFICATION_PORT_TYPE;
typedef struct WHV_DOORBELL_MATCH_DATA
{
WHV_GUEST_PHYSICAL_ADDRESS GuestAddress;
UINT64 Value;
UINT32 Length;
UINT32 MatchOnValue:1;
UINT32 MatchOnLength:1;
UINT32 Reserved:30;
} WHV_DOORBELL_MATCH_DATA;
typedef struct WHV_NOTIFICATION_PORT_PARAMETERS
{
WHV_NOTIFICATION_PORT_TYPE NotificationPortType;
UINT16 Reserved;
UINT8 Reserved1;
UINT8 ConnectionVtl;
union
{
WHV_DOORBELL_MATCH_DATA Doorbell;
struct
{
UINT32 ConnectionId;
} Event;
};
} WHV_NOTIFICATION_PORT_PARAMETERS;
typedef PVOID WHV_NOTIFICATION_PORT_HANDLE;
HRESULT
WINAPI
WHvCreateNotificationPort(
_In_ WHV_PARTITION_HANDLE Partition,
_In_ const WHV_NOTIFICATION_PORT_PARAMETERS* Parameters,
_In_ HANDLE EventHandle,
_Out_ WHV_NOTIFICATION_PORT_HANDLE* PortHandle
);
Parameters
Partition
Дескриптор объекта секции.
Parameters
Указывает тип и конфигурацию создаваемого порта уведомлений. См. WHV_NOTIFICATION_PORT_PARAMETERS.
EventHandle
Обработка объекта события Windows, сигналивного при активации порта уведомлений.
PortHandle
Получает дескриптор для только что созданного порта уведомлений. Дескриптор используется в последующих вызовах WHvSetNotificationPortProperty и WHvDeleteNotificationPort.
Возвращаемое значение
Если функция выполнена успешно, возвращается S_OKзначение.
Функция возвращает E_INVALIDARG , если NotificationPortType не является допустимым WHV_NOTIFICATION_PORT_TYPE значением, или если данные соответствия двери недопустимы для порта doorbell. Сведения о полях данных и правилах, которые управляют ими, см. в разделе " Типы данных Doorbell".
Remarks
Функция WHvCreateNotificationPort создает порт уведомлений, который сигнализирует предоставленному объекту события Windows при создании соответствующего события секции. Порты уведомлений заменяют устаревшую WHvRegisterPartitionDoorbellEvent функцию, которая эквивалентна созданию порта уведомлений типа doorbell.
Когда NotificationPortType это WHvNotificationPortTypeDoorbellпроисходит, порт сигнализирует EventHandle , когда виртуальный процессор записывает соответствующее значение в гостевой физический адрес, описанный участником Doorbell . И MatchOnValueMatchOnLength флаги определяют, должно ли соответствовать записанное значение и длина.
Когда NotificationPortType это WHvNotificationPortTypeEventпроисходит, порт сигнализирует EventHandle , когда гость вызывает HvCallSignalEvent гиперкалл с идентификатором подключения, равным члену Event.ConnectionId .
Создайте секцию с WHvCreatePartitionпомощью, настройте ее и вызов WHvSetupPartition перед созданием портов уведомлений. После создания порта настройте предпочтительный целевой виртуальный процессор или длительность сходства с WHvSetNotificationPortPropertyи удалите его с WHvDeleteNotificationPort.
Требования
| Requirement | Ценность |
|---|---|
| Минимальный поддерживаемый Windows | Windows 10 версии 20H2 (x64); Windows 11 версии 24H2, сборка 26100.3915 (Arm64) |
| Header | WinHvPlatform.h |
| Библиотека | WinHvPlatform.lib |
| DLL | WinHvPlatform.dll |
| Architecture | x64, Arm64 |