Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Die KeSaveFloatingPointState Routine speichert den nichtvolatile Gleitkommakontext, sodass der Aufrufer Gleitkommavorgänge ausführen kann.
Syntax
NTSTATUS KeSaveFloatingPointState(
[out] PKFLOATING_SAVE FloatSave
);
Parameter
[out] FloatSave
Zeiger auf einen vom Aufrufer zugewiesenen Residentpuffer, der mindestens Größe(KFLOATING_SAVE) sein muss.
Rückgabewert
KeSaveFloatingPointState gibt STATUS_SUCCESS zurück, wenn der Gleitkommakontext des aktuellen Threads gespeichert und ein neuer Gleitkommakontext für den Aufrufer eingerichtet wird. Andernfalls wird eine der folgenden Fehlerstatuscodes zurückgegeben.
| Rückgabecode | Beschreibung |
|---|---|
|
Das System ist so konfiguriert, dass die Gleitkommaemulation verwendet wird, anstatt Gleitkommavorgänge in den Prozessoren auszuführen. |
|
KeSaveFloatingPointState konnte nicht genügend Arbeitsspeicher zuordnen, um den Gleitkommakontext des aktuellen Threads zu speichern. |
Bemerkungen
Ein erfolgreicher Aufruf von KeSaveFloatingPointState ermöglicht es dem Aufrufer, Gleitkommavorgänge selbst auszuführen, aber ein solcher Aufrufer muss den vorherigen nichtvolatile Gleitkommakontext wiederherstellen, sobald seine Gleitkommavorgänge ausgeführt werden. Jede Routine, die KeSaveFloatingPointState- aufruft, muss KeRestoreFloatingPointState- aufrufen, bevor diese Routine die Steuerung zurückgibt.
Wenn der Aufruf von KeSaveFloatingPointState erfolgreich ist, sind die Daten bei FloatSave- für den Aufrufer undurchsichtig. Der Aufrufer sollte den Speicher, den er für diese Daten zugewiesen hat, erst nach dem Aufruf von KeRestoreFloatingPointStatefreigeben.
In Windows Vista und früheren Versionen von Windows muss ein KeSaveFloatingPointState Aufruf und der entsprechende KeRestoreFloatingPointState Anruf in einer geschützten Region auftreten. Das heißt, die KeEnterGuardedRegion Routine muss aufgerufen werden, bevor KeSaveFloatingPointState aufgerufen wird, und die KeLeaveGuardedRegion Routine muss aufgerufen werden, nachdem KeRestoreFloatingPointState aufgerufen wird. In Windows 7 und höheren Versionen von Windows ist keine solche Anforderung vorhanden.
Aus Leistungsgründen sollten Treiber keine Gleitkommavorgänge ausführen, es sei denn, es ist unbedingt erforderlich. Der Aufwand zum Speichern und Wiederherstellen des nicht volatile Gleitkommazustands des aktuellen Threads beeinträchtigt die Leistung eines Treibers, der Gleitkommavorgänge ausführt.
Anforderungen
| Anforderung | Wert |
|---|---|
| mindestens unterstützte Client- | Ab Windows 2000 verfügbar. |
| Zielplattform- | Universal |
| Header- | wdm.h (include Wdm.h, Ntddk.h, Ntifs.h) |
| Library | NtosKrnl.lib |
| DLL- | NtosKrnl.exe |
| IRQL- | <= DISPATCH_LEVEL |
| DDI-Complianceregeln | HwStorPortProhibitedDIs(storport), IrqlKeDispatchLte(wdm) |