Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Lekéri a mentett állapot egy kategóriáját egy virtuális processzorból.
Szemantika
// WHvGetVirtualProcessorState and WHvSetVirtualProcessorState types.
#if defined(_AMD64_)
typedef enum WHV_VIRTUAL_PROCESSOR_STATE_TYPE
{
WHvVirtualProcessorStateTypeSynicMessagePage = 0x00000000,
WHvVirtualProcessorStateTypeSynicEventFlagPage = 0x00000001,
WHvVirtualProcessorStateTypeSynicTimerState = 0x00000002,
WHvVirtualProcessorStateTypeInterruptControllerState2 = 0x00001000,
WHvVirtualProcessorStateTypeXsaveState = 0x00001001,
WHvVirtualProcessorStateTypeNestedState = 0x00001002,
} WHV_VIRTUAL_PROCESSOR_STATE_TYPE;
#elif defined (_ARM64_)
#define WHV_VIRTUAL_PROCESSOR_STATE_TYPE_PFN (1ui32 << 31)
#define WHV_VIRTUAL_PROCESSOR_STATE_TYPE_ANY_VP (1ui32 << 30)
typedef enum WHV_VIRTUAL_PROCESSOR_STATE_TYPE
{
WHvVirtualProcessorStateTypeInterruptControllerState = 0x00000000 | WHV_VIRTUAL_PROCESSOR_STATE_TYPE_PFN,
WHvVirtualProcessorStateTypeSynicMessagePage = 0x00000002 | WHV_VIRTUAL_PROCESSOR_STATE_TYPE_PFN,
WHvVirtualProcessorStateTypeSynicEventFlagPage = 0x00000003 | WHV_VIRTUAL_PROCESSOR_STATE_TYPE_PFN,
WHvVirtualProcessorStateTypeSynicTimerState = 0x00000004,
WHvVirtualProcessorStateTypeGlobalInterruptState = 0x00000006 | WHV_VIRTUAL_PROCESSOR_STATE_TYPE_PFN | WHV_VIRTUAL_PROCESSOR_STATE_TYPE_ANY_VP,
WHvVirtualProcessorStateTypeSveState = 0x00000007 | WHV_VIRTUAL_PROCESSOR_STATE_TYPE_PFN,
} WHV_VIRTUAL_PROCESSOR_STATE_TYPE;
#endif
HRESULT
WINAPI
WHvGetVirtualProcessorState(
_In_ WHV_PARTITION_HANDLE Partition,
_In_ UINT32 VpIndex,
_In_ WHV_VIRTUAL_PROCESSOR_STATE_TYPE StateType,
_Out_writes_bytes_to_(BufferSizeInBytes, *BytesWritten) VOID* Buffer,
_In_ UINT32 BufferSizeInBytes,
_Out_opt_ UINT32* BytesWritten
);
Parameters
Partition
A partícióobjektum kezelése.
VpIndex
Annak a virtuális processzornak az indexét adja meg, amelynek az állapotát lekéri.
StateType
Meghatározza a lekérendő állapotkategóriát. Az egyes értékek jelentését a Megjegyzések szakaszban találja.
Buffer
Megkapja a kért állapotot. A puffer formátuma a következőtől StateTypefügg: .
BufferSizeInBytes
A bájtban megadott méretet Bufferadja meg.
BytesWritten
Ha nem null értékű, akkor a rendszer a beírt bájtok számát kapja meg Buffer. Ha a puffer túl kicsi, megkapja az állapot tárolásához szükséges bájtok számát.
Visszaadott érték
Ha a függvény sikeres, a visszatérési érték az S_OK.
Ha Buffer túl kicsi ahhoz, hogy a kért állapotot tartalmazza, a visszatérési érték .WHV_E_INSUFFICIENT_BUFFER Ebben az esetben BytesWritten megkapja a szükséges bájtok számát. Ha StateType nem érvényes állapottípus, a visszatérési érték a következő E_INVALIDARG.
Remarks
A WHvGetVirtualProcessorState függvény lekéri a virtuális processzor állapotának egy olyan kategóriáját, amelyet a StateTyperendszer azonosít. Egyetlen, architektúrabarát felületet biztosít a virtuális processzor állapotának mentéséhez, és felülírja az elavult WHvGetVirtualProcessorXsaveState és WHvGetVirtualProcessorInterruptControllerState2 a függvényeket.
Mindkét architektúrában gyakori állapottípusok
-
WHvVirtualProcessorStateTypeSynicMessagePageésWHvVirtualProcessorStateTypeSynicEventFlagPagekérje le a szintetikus megszakításvezérlő (SynIC) üzenetét és eseményjelző lapjait. -
WHvVirtualProcessorStateTypeSynicTimerStatelekéri a SynIC szintetikus időzítő állapotát.
x64-állapottípusok
-
WHvVirtualProcessorStateTypeInterruptControllerState2lekéri a helyi APIC-állapotot. -
WHvVirtualProcessorStateTypeXsaveStatelekéri a processzor kiterjesztett (xsave) állapotát. -
WHvVirtualProcessorStateTypeNestedStatebeolvassa a beágyazott virtualizálási állapotot.
Arm64-állapottípusok
-
WHvVirtualProcessorStateTypeInterruptControllerStatelekéri a processzoronkénti GIC-állapotot. -
WHvVirtualProcessorStateTypeGlobalInterruptStateA partíciószintű megszakításvezérlő állapotát kéri le. -
WHvVirtualProcessorStateTypeSveStatelekéri a méretezhető vektorkiterjesztés (SVE) állapotát.
A szükséges pufferméret meghatározásához hívja meg a függvényt egy túl kicsi pufferrel, és olvassa be a függvény visszatérésekor WHV_E_INSUFFICIENT_BUFFERvisszaadott BytesWritten értéket, majd hívja újra a függvényt egy ilyen méretű pufferrel.
Requirements
| Requirement | Érték |
|---|---|
| Minimálisan támogatott Windows | Windows 10, 20H2-es verzió (x64); Windows 11, 24H2-es verzió, 26100.3915-ös build (Arm64) |
| Header | WinHvPlatform.h |
| Könyvtár | WinHvPlatform.lib |
| DLL | WinHvPlatform.dll |
| Architecture | x64, Arm64 |