Fonction KeSaveExtendedProcessorState (wdm.h)
La routine KeSaveExtendedProcessorState enregistre les informations d’état du processeur étendu.
Syntaxe
NTSTATUS KeSaveExtendedProcessorState(
[in] ULONG64 Mask,
[out] PXSTATE_SAVE XStateSave
);
Paramètres
[in] Mask
Masque de fonctionnalité 64 bits. Les bits de ce masque identifient les états des fonctionnalités de processeur étendues à enregistrer. Si un bit de masque en est un, la routine enregistre l’état de la fonctionnalité identifiée par ce bit. Si un bit de masque est égal à zéro, l’état de la fonctionnalité correspondante n’est pas enregistré. Ce masque ne doit pas identifier les fonctionnalités de processeur étendues que le système d’exploitation n’a pas activées. Pour obtenir un masque des fonctionnalités activées, appelez la routine RtlGetEnabledExtendedFeatures .
Un appelant peut définir ce paramètre sur la valeur OR au niveau du bit d’un ou plusieurs des bits d’indicateur XSTATE_MASK_XXX suivants :
Valeur | Signification |
---|---|
XSTATE_MASK_LEGACY_FLOATING_POINT | Extension à virgule flottante (x87/MMX). |
XSTATE_MASK_LEGACY_SSE | Extension SIMD (SSE) de streaming. |
XSTATE_MASK_LEGACY | Les extensions x87/MMX et SSE. |
XSTATE_MASK_GSSE | Extension Intel Sandy Bridge (anciennement Gesher) SSE. |
XSTATE_MASK_AVX512 | Extension AVX-512 |
XSTATE_MASK_MPX | Extension MPX |
XSTATE_MASK_AMX_TILE_CONFIG | Extension AMX (configuration) |
XSTATE_MASK_AMX_TILE_DATA | Extension AMX (données) |
[out] XStateSave
Pointeur vers une mémoire tampon allouée par l’appelant dans laquelle la routine écrit une structure XSTATE_SAVE . Cette structure contient les informations d’état enregistrées pour les fonctionnalités de processeur étendues indiquées par le paramètre Mask . La mémoire tampon doit être suffisamment grande pour contenir cette structure.
Valeur retournée
KeSaveExtendedProcessorState retourne STATUS_SUCCESS si l’appel réussit. Les valeurs de retour d’erreur possibles sont les suivantes :
Code de retour | Description |
---|---|
|
Une opération d’allocation de mémoire a échoué. |
Remarques
Sur les processeurs x86 qui prennent en charge les instructions XSAVE et XRSTOR, ces instructions fournissent un mécanisme flexible pour enregistrer et restaurer les informations d’état du processeur étendu. KeSaveExtendedProcessorState utilise ces instructions si elles sont disponibles.
Pour restaurer l’état du processeur étendu enregistré par KeSaveExtendedProcessorState, appelez la routine KeRestoreExtendedProcessorState .
Le paramètre Mask spécifie les fonctionnalités de processeur étendues dont l’état doit être enregistré. Un appel KeRestoreExtendedProcessorState restaure uniquement l’état du processeur étendu qui a été enregistré par l’appel KeSaveExtendedProcessorState qui a enregistré l’état.
Le code en mode noyau doit enregistrer l’état d’une fonctionnalité de processeur étendu avant d’utiliser cette fonctionnalité, et il doit restaurer l’état avant sa sortie.
Les routines de service d’interruption (ISR) s’exécutent sous de graves contraintes de temps qui les empêchent généralement d’utiliser des fonctionnalités de processeur étendues. Toutefois, un ISR peut planifier un appel de procédure différée (DPC) qui utilise une ou plusieurs fonctionnalités de processeur étendues. La routine DPC doit enregistrer et restaurer l’état des fonctionnalités étendues pour conserver le contexte du programme interrompu dans lequel la routine exécute l’espace d’adressage de processus.
Les routines KeSaveFloatingPointState et KeRestoreFloatingPointState enregistrent et restaurent uniquement l’état à virgule flottante (les registres x87/MMX) et l’état SSE.
Configuration requise
Condition requise | Valeur |
---|---|
Client minimal pris en charge | Disponible dans Windows 7 et versions ultérieures de Windows. |
Plateforme cible | Universal |
En-tête | wdm.h (inclure Wdm.h, Ntddk.h, Ntifs.h) |
Bibliothèque | Ntoskrnl.lib |
DLL | Ntoskrnl.exe |
IRQL | <= DISPATCH_LEVEL |