Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Bir konak olayı sinyallendiğinde bölüme önceden yapılandırılmış bir kesme veya olay teslim eden bir tetikleyici nesnesi oluşturur.
Sözdizimi
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
Bölüm nesnesi için tanıtıcı.
Parameters
Tetikleyicinin türünü ve bölüme teslim etmek için eylemi belirtir. Üye TriggerType , birleşimin hangi üyesinin kullanılacağını seçer: WHvTriggerTypeInterrupt (yalnızca x64) Interruptkullanır, WHvTriggerTypeSynicEvent kullanır SynicEventve WHvTriggerTypeDeviceInterrupt kullanır DeviceInterrupt. Her üyenin tam tanımı için bkz. Tetikleyici Veri Türleri .
TriggerHandle
Tanıtıcıyı yeni oluşturulan tetikleyici nesnesine alır. Tetikleyiciyi yeniden hedeflemek ve silmek için ile WHvDeleteTrigger bu tanıtıcıyı WHvUpdateTriggerParameters kullanın.
EventHandle
Bir Win32 olay tanıtıcısı alır. Çağıran, içinde yapılandırılan eylemin Parameters bölüme teslim edilmesine neden olan bu olayı (örneğin, ile SetEvent ) işaretleyerek tetikleyiciyi etkinleştirir. Çağıranın bu tanıtıcıya sahip olması ve artık gerekli olmadığında ile serbest CloseHandle bırakması gerekir.
Dönüş Değeri
İşlev başarılı olursa, dönüş değeri olur S_OK.
içindeki parametreler Parameters seçili tetikleyici türü için geçerli değilse işlevi döndürürE_INVALIDARG.
WHvTriggerTypeDeviceInterrupt Tetikleyici için geçersiz LogicalDeviceId bir döndürürHRESULT_FROM_WIN32(ERROR_HV_INVALID_DEVICE_ID).
Açıklamalar
işlevi, WHvCreateTrigger bir konak olayını önceden yapılandırılmış bir konuk hedefleme eylemine bağlayan bölüm kapsamlı bir nesne oluşturur. Tetikleyici oluşturulduktan sonra konak, döndürülene EventHandle ( örneğin bir G/Ç tamamlama yordamından veya başka bir iş parçacığından) her teslimde ayrı bir API çağrısı veya hiper çağrı yapmadan yapılandırılmış kesmeyi veya olayı bölüme teslim etmek için sinyal gönderir. Bu, tetikleyicileri sanal NIC alma kuyrukları, depolama tamamlama halkaları ve kanal sinyali gibi veri yolu senaryolarına uygun hale getirir.
TriggerType öğesinin Parameters üyesi, olay sinyallendiğinde teslim edilen eylemi seçer:
-
WHvTriggerTypeInterrupt(yalnızca x64) yapı tarafındanWHV_INTERRUPT_CONTROLtanımlanan bir sanal kesme ekler ; ileWHvRequestInterruptaynı etkiyi sağlar, ancak olay her sinyallendiğinde yeniden teslim edilebilmesi için önceden silahlıdır. -
WHvTriggerTypeSynicEventsanal işlemci, sanal güven düzeyi ve yapı tarafındanWHV_SYNIC_EVENT_PARAMETERSadlandırılan SINT üzerinde yapay kesme denetleyicisi (SynIC) olay bayrağını ayarlar.TargetVtlVTL 0 olmalıdır. -
WHvTriggerTypeDeviceInterruptveMsiDatakullanarakMsiAddresstarafındanLogicalDeviceIdadlandırılan mantıksal cihaz için bir cihaz (MSI) kesmesi onaylar. Mantıksal cihaz, tetikleyici işaretlenmeden önce bölümde zaten mevcut olmalıdır ve kesme eşlenmiş olmalıdır (örneğin, aracılığıylaWHvMapVpciDeviceInterrupt).
Teslim zaman uyumsuzdur. Bir teslimat tamamlanmadan önce gelen birden çok sinyal tek bir teslimatta birleştirilir. Konuk, tetikleyicinin her teslimde temsil ettiği kuyruğu veya halkayı boşaltmaya hazır olmalıdır.
WHvTriggerTypeInterrupt
Interrupt ve üyesi WHV_TRIGGER_PARAMETERS yalnızca x64'te kullanılabilir. Arm64'te yalnızca WHvTriggerTypeSynicEvent ve WHvTriggerTypeDeviceInterrupt kullanılabilir.
Tetikleyici ve olay tanıtıcısı bağımsız yaşam sürelerine sahiptir. ile tetikleyicinin WHvDeleteTrigger silinmesi geçersiz EventHandlekılmaz; çağıranın yine de ile CloseHandlekapatması gerekir. Tetikleyiciler dinamik geçişte korunmaz.
Requirements
| Requirement | Değer |
|---|---|
| Desteklenen en düşük Windows | Windows 10, sürüm 20H2 (x64); Windows 11, sürüm 24H2, derleme 26100.3915 (Arm64) |
| Header | WinHvPlatform.h |
| Kütüphane | WinHvPlatform.lib |
| DLL | WinHvPlatform.dll |
| Architecture | x64, Arm64 |