Freigeben über


KeRestoreFloatingPointState-Funktion (wdm.h)

Die KeRestoreFloatingPointState-Routine stellt den nicht flüchtigen Gleitkommakontext wieder her, der durch den vorherigen Aufruf von KeSaveFloatingPointState gespeichert wurde.

Syntax

NTSTATUS KeRestoreFloatingPointState(
  [in] PKFLOATING_SAVE FloatSave
);

Parameter

[in] FloatSave

Ein Zeiger auf die KFLOATING_SAVE-Struktur , die im vorherigen Aufruf von KeSaveFloatingPointState übergeben wurde.

Rückgabewert

KeRestoreFloatingPointState gibt STATUS_SUCCESS zurück.

Hinweise

KeRestoreFloatingPointState ist der Kehrwert von KeSaveFloatingPointState.

Jede Routine, die KeSaveFloatingPointState aufruft, mussKeRestoreFloatingPointState aufrufen, bevor diese Routine die Steuerung zurückgibt, und sie muss mit demselben IRQL ausgeführt werden wie die, von der aus der vorherige Aufruf von KeSaveFloatingPointState erfolgt ist. Wenn eine dieser Bedingungen nicht erfüllt wird, wird eine Systemfehlerprüfung verursacht.

Kernelmodustreibercode muss sicherstellen, dass Aufrufe von KeSaveFloatingPointState und KeRestoreFloatingPointState ordnungsgemäß geschachtelt sind. Dies ist erforderlich, damit auf jeder Schachtelungsebene der Zustand, der vom KeRestoreFloatingPointState-Aufruf wiederhergestellt wurde, der vom entsprechenden KeSaveFloatingPointState-Aufruf gespeichert wurde. Um eine ordnungsgemäße Schachtelung sicherzustellen, muss der Kernelmodustreibercode die folgenden Regeln befolgen:

  • Ein KeRestoreFloatingPointState-Aufruf , der einen gespeicherten Zustand wiederherstellt, muss mit demselben IRQL ausgeführt werden wie der KeSaveFloatingPointState-Aufruf , der den Zustand gespeichert hat.
  • Wenn ein Paar von KeSaveFloatingPointState - und KeRestoreFloatingPointState-Aufrufen in einem Paar von umgebenden KeSaveFloatingPointState - und KeRestoreFloatingPointState-Aufrufen geschachtelt ist, darf der IRQL für die geschachtelten Aufrufe nicht niedriger als der IRQL für die umgebenden Aufrufe sein.
  • In der Regel befindet sich die vom Aufrufer zugewiesene KFLOATING_SAVE Struktur, die den zustand enthält, der von KeSaveFloatingPointState gespeichert wurde. Der Stapel behält natürlich die Schachtelung gespeicherter Zustandsinformationen bei. Wenn der Treibercode den Zustand an einem anderen Speicherort als dem Stapel speichert, muss der Treiberschreiber besondere Sorgfalt darauf achten, dass die Schachtelung der Aufrufe KeSaveFloatingPointState und KeRestoreFloatingPointState beibehalten wird.
  • Der KeRestoreFloatingPointState-Aufruf , der einen gespeicherten Zustand wiederherstellt, muss im selben Thread wie der KeSaveFloatingPointState-Aufruf ausgeführt werden, der den Zustand gespeichert hat.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Verfügbar ab Windows 2000.
Zielplattform Universell
Header wdm.h (einschließlich Wdm.h, Ntddk.h, Ntifs.h)
Bibliothek NtosKrnl.lib
DLL NtosKrnl.exe
IRQL <= DISPATCH_LEVEL (siehe Abschnitt Hinweise)

Weitere Informationen

KFLOATING_SAVE

KeSaveFloatingPointState