Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Recupera una categoria di stato salvato da un processore virtuale.
Sintassi
// 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
Handle per l'oggetto partizione.
VpIndex
Specifica l'indice del processore virtuale il cui stato viene recuperato.
StateType
Specifica la categoria di stato da recuperare. Vedere la sezione Osservazioni per il significato di ogni valore.
Buffer
Riceve lo stato richiesto. Il formato del buffer dipende da StateType.
BufferSizeInBytes
Specifica le dimensioni di Buffer, in byte.
BytesWritten
Se non NULL, riceve il numero di byte scritti in Buffer. Quando il buffer è troppo piccolo, riceve il numero di byte necessari per contenere lo stato.
Valore restituito
Se la funzione ha esito positivo, il valore restituito è S_OK.
Se Buffer è troppo piccolo per contenere lo stato richiesto, il valore restituito è WHV_E_INSUFFICIENT_BUFFER. In questo caso, BytesWritten riceve il numero di byte necessari. Se StateType non è un tipo di stato valido, il valore restituito è E_INVALIDARG.
Remarks
La WHvGetVirtualProcessorState funzione recupera una categoria di stato del processore virtuale identificato da StateType. Fornisce un'unica interfaccia compatibile con l'architettura per il salvataggio dello stato del processore virtuale e sostituisce le funzioni e WHvGetVirtualProcessorInterruptControllerState2 deprecateWHvGetVirtualProcessorXsaveState.
Tipi di stato comuni a entrambe le architetture
-
WHvVirtualProcessorStateTypeSynicMessagePageeWHvVirtualProcessorStateTypeSynicEventFlagPagerecuperano il messaggio synIC (Synthetic Interrupt Controller) e le pagine del flag di evento. -
WHvVirtualProcessorStateTypeSynicTimerStaterecupera lo stato del timer sintetico SynIC.
Tipi di stato x64
-
WHvVirtualProcessorStateTypeInterruptControllerState2recupera lo stato APIC locale. -
WHvVirtualProcessorStateTypeXsaveStaterecupera lo stato esteso del processore (xsave). -
WHvVirtualProcessorStateTypeNestedStaterecupera lo stato di virtualizzazione annidato.
Tipi di stato Arm64
-
WHvVirtualProcessorStateTypeInterruptControllerStaterecupera lo stato GIC per processore. -
WHvVirtualProcessorStateTypeGlobalInterruptStaterecupera lo stato del controller interrupt a livello di partizione. -
WHvVirtualProcessorStateTypeSveStaterecupera lo stato SVE (Scalable Vector Extension).
Per determinare le dimensioni del buffer necessarie, chiamare la funzione con un buffer troppo piccolo e leggere il valore restituito in BytesWritten quando la funzione restituisce WHV_E_INSUFFICIENT_BUFFER, quindi chiamare di nuovo la funzione con un buffer di tale dimensione.
Requisiti
| Requisito | Valore |
|---|---|
| Minimo Windows supportato | Windows 10 versione 20H2 (x64); Windows 11, versione 24H2, build 26100.3915 (Arm64) |
| Header | WinHvPlatform.h |
| Libreria | WinHvPlatform.lib |
| DLL | WinHvPlatform.dll |
| Architecture | x64, Arm64 |