Lire en anglais

Partager via


KeRestoreFloatingPointState, fonction (wdm.h)

La routine KeRestoreFloatingPointState restaure le contexte à virgule flottante nonvolile 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 qui a été passée dans l’appel précédent à KeSaveFloatingPointState.

Valeur de retour

KeRestoreFloatingPointState retourne STATUS_SUCCESS.

Remarques

KeRestoreFloatingPointState est la réciproque de KeSaveFloatingPointState.

Toute routine qui appelle KeSaveFloatingPointState doit appeler KeRestoreFloatingPointState avant que cette routine 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 fait de ne pas répondre à l’une de ces conditions entraîne une vérification des bogues système.

Le code du pilote en mode noyau doit s’assurer 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 enregistré par l’appel KeSaveFloatingPointState correspondant. Pour garantir l’imbrication appropriée, le code du pilote en mode noyau doit respecter les règles suivantes :

  • Un appel KeRestoreFloatingPointState qui restaure un état enregistré doit s’exécuter au même irQL que le KeSaveFloatingPointState appel qui a enregistré l’état.
  • Si une paire d’appels KeSaveFloatingPointState et KeRestoreFloatingPointState est imbriquée dans une paire d’appels KeSaveFloatingPointState et KeRestoreFloatingPointState, le runtime d’intégration pour les appels imbriqués ne doit pas être inférieur à l’IRQL pour les appels environnants.
  • En règle générale, la structure 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 dans un emplacement autre que la pile, l’enregistreur de pilotes doit prendre soin de conserver 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.

Exigences

Exigence Valeur
client minimum pris en charge Disponible à partir de Windows 2000.
plateforme cible Universel
d’en-tête wdm.h (include 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