Funzione KeSaveExtendedProcessorState (wdm.h)
La routine KeSaveExtendedProcessorState salva le informazioni sullo stato del processore esteso.
Sintassi
NTSTATUS KeSaveExtendedProcessorState(
[in] ULONG64 Mask,
[out] PXSTATE_SAVE XStateSave
);
Parametri
[in] Mask
Maschera di funzionalità a 64 bit. I bit in questa maschera identificano gli stati delle funzionalità del processore esteso da salvare. Se un bit mask è uno, la routine salva lo stato della funzionalità identificata da questo bit. Se un bit mask è zero, lo stato per la funzionalità corrispondente non viene salvato. Questa maschera non deve identificare le funzionalità del processore estese non abilitate dal sistema operativo. Per ottenere una maschera delle funzionalità abilitate, chiamare la routine RtlGetEnabledExtendedFeatures .
Un chiamante può impostare questo parametro sull'OR bit per bit di uno o più dei bit di flag XSTATE_MASK_XXX seguenti:
Valore | Significato |
---|---|
XSTATE_MASK_LEGACY_FLOATING_POINT | Estensione a virgola mobile (x87/MMX). |
XSTATE_MASK_LEGACY_SSE | Estensione SIMD (SSE) di streaming. |
XSTATE_MASK_LEGACY | Entrambe le estensioni x87/MMX e SSE. |
XSTATE_MASK_GSSE | Estensione intel Sandy Bridge (in precedenza Gesher). |
XSTATE_MASK_AVX512 | Estensione AVX-512 |
XSTATE_MASK_MPX | Estensione MPX |
XSTATE_MASK_AMX_TILE_CONFIG | Estensione AMX (configurazione) |
XSTATE_MASK_AMX_TILE_DATA | Estensione AMX (dati) |
[out] XStateSave
Puntatore a un buffer allocato dal chiamante in cui la routine scrive una struttura XSTATE_SAVE . Questa struttura contiene le informazioni sullo stato salvate per le funzionalità del processore estese indicate dal parametro Mask . Il buffer deve essere sufficientemente grande da contenere questa struttura.
Valore restituito
KeSaveExtendedProcessorState restituisce STATUS_SUCCESS se la chiamata ha esito positivo. I valori restituiti di errore possibili includono quanto segue:
Codice restituito | Descrizione |
---|---|
|
Operazione di allocazione della memoria non riuscita. |
Commenti
Nei processori basati su x86 che supportano le istruzioni XSAVE e XRSTOR, queste istruzioni forniscono un meccanismo flessibile per salvare e ripristinare le informazioni sullo stato del processore esteso. KeSaveExtendedProcessorState usa queste istruzioni, se disponibili.
Per ripristinare lo stato del processore esteso salvato da KeSaveExtendedProcessorState, chiamare la routine KeRestoreExtendedProcessorState .
Il parametro Mask consente di specificare le funzionalità del processore esteso il cui stato deve essere salvato. Una chiamata KeRestoreExtendedProcessorState ripristina solo lo stato del processore esteso salvato dalla chiamata KeSaveExtendedProcessorState che ha salvato lo stato.
Il codice in modalità kernel deve salvare lo stato di una funzionalità del processore estesa prima di usare tale funzionalità e deve ripristinare lo stato prima di uscire.
Le routine del servizio interrupt vengono eseguite con vincoli di tempo gravi che in genere impediscono l'uso di funzionalità del processore estese. Tuttavia, un ISR può pianificare una chiamata di procedura posticipata (DPC) che usa una o più funzionalità del processore estese. La routine DPC deve salvare e ripristinare lo stato delle funzionalità estese per mantenere il contesto del programma interrotto nel cui spazio indirizzi del processo viene eseguita la routine.
Le routine KeSaveFloatingPointState e KeRestoreFloatingPointState salvano e ripristinano solo lo stato a virgola mobile (registri x87/MMX) e lo stato SSE.
Requisiti
Requisito | Valore |
---|---|
Client minimo supportato | Disponibile in Windows 7 e versioni successive di Windows. |
Piattaforma di destinazione | Universale |
Intestazione | wdm.h (include Wdm.h, Ntddk.h, Ntifs.h) |
Libreria | Ntoskrnl.lib |
DLL | Ntoskrnl.exe |
IRQL | <= DISPATCH_LEVEL |