HvCallSignalEvent

HvCallSignalEvent hypercall 向拥有与指定连接关联的端口的分区中的事件发出信号。

通过在接收分区的某个虚拟处理器的 SIEF 页中设置一个位来发出事件信号。 调用方指定相对标志号。 实际 SIEF 位数由虚拟机监控程序通过将指定的标志号添加到与端口关联的基标志号来计算。

接口

HV_STATUS
HvCallSignalEvent(
   _In_ HV_CONNECTION_ID ConnectionId,
   _In_ UINT16 FlagNumber
   );

调用代码

0x005D (简单)

输入参数

名称 Offset 大小 提供的信息
ConnectionId 0 4 指定连接的 ID。
FlagNumber 4 2 指定调用方要在目标 SIEF 区域内设置的事件标志的相对索引。 此数字相对于与端口关联的基标志号。
RsvdZ 6 2

返回值

状态代码 错误条件
HV_STATUS_ACCESS_DENIED 调用方分区不具有 SignalEvents 特权。
HV_STATUS_INVALID_CONNECTION_ID 指定的连接 ID 无效。
HV_STATUS_INVALID_PORT_ID 已删除与指定连接关联的端口。
与指定连接关联的端口属于未处于“活动”状态的分区。
与指定连接关联的端口不是“事件”类型端口。
HV_STATUS_INVALID_PARAMETER 指定的标志号大于或等于端口的标志计数。
HV_STATUS_INVALID_VP_INDEX 目标 VP 不再存在,或者没有可将消息发布到的可用 VP。
HV_STATUS_INVALID_SYNIC_STATE 目标 VP 的 SynIC 已禁用,无法接受信号事件。
目标 VP 的 SIEF 页处于禁用状态。