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