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
STATUS_INSUFFICIENT_RESOURCES
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

Voir aussi

KeRestoreExtendedProcessorState

KeRestoreFloatingPointState

KeSaveFloatingPointState

RtlGetEnabledExtendedFeatures

XSTATE_SAVE