KeSaveFloatingPointState-Funktion (wdm.h)
Die KeSaveFloatingPointState-Routine speichert den nicht flüchtigen Gleitkommakontext, damit der Aufrufer Gleitkommavorgänge ausführen kann.
Syntax
NTSTATUS KeSaveFloatingPointState(
[out] PKFLOATING_SAVE FloatSave
);
Parameter
[out] FloatSave
Zeiger auf einen vom Aufrufer zugewiesenen residenten Puffer, der mindestens sizeof(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 einer der folgenden Fehler status Codes zurückgegeben.
Rückgabecode | Beschreibung |
---|---|
|
Das System ist für die Verwendung von Gleitkommaemulation konfiguriert, anstatt Gleitkommavorgänge in den Prozessoren auszuführen. |
|
KeSaveFloatingPointState konnte nicht genügend Arbeitsspeicher zuweisen, um den Gleitkommakontext des aktuellen Threads zu speichern. |
Hinweise
Ein erfolgreicher Aufruf von KeSaveFloatingPointState ermöglicht es dem Aufrufer, eigene Gleitkommaoperationen auszuführen, aber ein solcher Aufrufer muss den vorherigen nicht flüchtigen Gleitkommakontext wiederherstellen, sobald seine Gleitkommavorgänge abgeschlossen sind. Jede Routine, die KeSaveFloatingPointState aufruft, muss KeRestoreFloatingPointState aufrufen, bevor diese Routine die Kontrolle 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 KeRestoreFloatingPointState freigeben.
In Windows Vista und früheren Versionen von Windows müssen ein KeSaveFloatingPointState-Aufruf und der entsprechende KeRestoreFloatingPointState-Aufruf in einer geschützten Region erfolgen. Das heißt, die KeEnterGuardedRegion-Routine muss aufgerufen werden, bevor KeSaveFloatingPointState aufgerufen wird, und die KeLeaveGuardedRegion-Routine muss nach dem Aufruf von KeRestoreFloatingPointState aufgerufen werden. In Windows 7 und höheren Versionen von Windows ist keine solche Anforderung vorhanden.
Aus Leistungsgründen sollten Treiber gleitkommabasierte Vorgänge vermeiden, es sei denn, dies ist unbedingt erforderlich. Der Mehraufwand beim Speichern und Wiederherstellen des nicht flüchtigen Gleitkommazustands des aktuellen Threads beeinträchtigt die Leistung jedes Treibers, der Gleitkommavorgänge ausführt.
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 |
DDI-Complianceregeln | HwStorPortProhibitedDIs(storport), IrqlKeDispatchLte(wdm) |