パーティションが一致するドアベルまたは SynIC イベントを生成したときに、Windows イベント オブジェクトに通知する通知ポートを作成します。
構文
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。
この関数は、NotificationPortTypeが有効なWHV_NOTIFICATION_PORT_TYPE値でない場合、またはドアベル の一致データがドアベル ポートに対して有効でない場合に、E_INVALIDARGを返します。 ドアベルの一致データ フィールドとそのルールについては、「 Doorbell データ型」を参照してください。
Remarks
WHvCreateNotificationPort関数は、パーティションで一致するイベントが生成されたときに、指定されたWindows イベント オブジェクトに通知する通知ポートを作成します。 通知ポートは、非推奨の WHvRegisterPartitionDoorbellEvent 関数よりも優先されます。これは、ドアベル型の通知ポートを作成することと同じです。
NotificationPortTypeがWHvNotificationPortTypeDoorbellされると、仮想プロセッサがDoorbell メンバーによって記述されたゲスト物理アドレスに一致する値を書き込むと、ポートはEventHandleを通知します。
MatchOnValueフラグとMatchOnLength フラグは、書き込まれた値と長さが一致する必要があるかどうかを制御します。
NotificationPortTypeがWHvNotificationPortTypeEventされると、ゲストが Event.ConnectionId メンバーと等しい接続 ID を使用してHvCallSignalEventハイパーコールを呼び出すと、ポートはEventHandleを通知します。
通知ポートを作成する前に、 WHvCreatePartitionを使用してパーティションを作成し、構成し、 WHvSetupPartition を呼び出します。 ポートが作成されたら、 WHvSetNotificationPortPropertyを使用して優先するターゲット仮想プロセッサまたはアフィニティ期間を調整し、 WHvDeleteNotificationPortで削除します。
Requirements
| 要件 | 価値 |
|---|---|
| サポートされている最小Windows | Windows 10バージョン 20H2 (x64);Windows 11、バージョン 24H2、ビルド 26100.3915 (Arm64) |
| Header | WinHvPlatform.h |
| 図書館 | WinHvPlatform.lib |
| DLL | WinHvPlatform.dll |
| Architecture | x64、Arm64 |