Fonction KeRestoreFloatingPointState (wdm.h)

La routine KeRestoreFloatingPointState restaure le contexte à virgule flottante non volatile enregistré par l’appel précédent à KeSaveFloatingPointState.

Syntaxe

NTSTATUS KeRestoreFloatingPointState(
  [in] PKFLOATING_SAVE FloatSave
);

Paramètres

[in] FloatSave

Pointeur vers la structure KFLOATING_SAVE passée dans l’appel précédent à KeSaveFloatingPointState.

Valeur retournée

KeRestoreFloatingPointState retourne STATUS_SUCCESS.

Remarques

KeRestoreFloatingPointState est la réciproque de KeSaveFloatingPointState.

Toute routine qui appelle KeSaveFloatingPointState doit appeler KeRestoreFloatingPointState avant que cette routine ne retourne le contrôle, et elle doit s’exécuter au même IRQL que celui à partir duquel l’appel précédent à KeSaveFloatingPointState s’est produit. Le non-respect de l’une de ces conditions entraîne un bogue système case activée.

Le code du pilote en mode noyau doit garantir que les appels à KeSaveFloatingPointState et KeRestoreFloatingPointState sont correctement imbriqués. Cela est nécessaire pour que, à chaque niveau d’imbrication, l’état qui a été restauré par l’appel KeRestoreFloatingPointState soit le même état que celui enregistré par l’appel KeSaveFloatingPointState correspondant. Pour garantir l’imbrication correcte, le code du pilote en mode noyau doit suivre les règles suivantes :

  • Un appel KeRestoreFloatingPointState qui restaure un état enregistré doit s’exécuter au même niveau IRQL que l’appel KeSaveFloatingPointState qui a enregistré l’état.
  • Si une paire d’appels KeSaveFloatingPointState et KeRestoreFloatingPointState est imbriquée dans une paire d’appels KeSaveFloatingPointState et KeRestoreFloatingPointState environnants, l’IRQL des appels imbriqués ne doit pas être inférieur à l’IRQL pour les appels environnants.
  • En règle générale, la structure de KFLOATING_SAVE allouée par l’appelant qui contient l’état enregistré par KeSaveFloatingPointState réside sur la pile. La pile conserve naturellement l’imbrication des informations d’état enregistrées. Si le code du pilote stocke l’état à un emplacement autre que la pile, l’enregistreur de pilotes doit veiller particulièrement à préserver l’imbrication des appels KeSaveFloatingPointState et KeRestoreFloatingPointState .
  • L’appel KeRestoreFloatingPointState qui restaure un état enregistré doit s’exécuter dans le même thread que l’appel KeSaveFloatingPointState qui a enregistré l’état.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Disponible à partir de Windows 2000.
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 la section Remarques)

Voir aussi

KFLOATING_SAVE

KeSaveFloatingPointState