Funzione KeSaveFloatingPointState (wdm.h)
La routine KeSaveFloatingPointState salva il contesto a virgola mobile non volatile in modo che il chiamante possa eseguire operazioni a virgola mobile.
Sintassi
NTSTATUS KeSaveFloatingPointState(
[out] PKFLOATING_SAVE FloatSave
);
Parametri
[out] FloatSave
Puntatore a un buffer residente allocato dal chiamante, che deve essere almeno sizeof(KFLOATING_SAVE).
Valore restituito
KeSaveFloatingPointState restituisce STATUS_SUCCESS se ha salvato il contesto a virgola mobile del thread corrente e ha configurato un contesto a virgola mobile aggiornato per il chiamante. In caso contrario, restituisce uno dei codici di stato di errore seguenti.
Codice restituito | Descrizione |
---|---|
|
Il sistema è configurato per l'uso dell'emulazione a virgola mobile, invece di eseguire operazioni a virgola mobile nei processori. |
|
KeSaveFloatingPointState non è riuscito ad allocare memoria sufficiente per salvare il contesto a virgola mobile del thread corrente. |
Commenti
Una chiamata riuscita a KeSaveFloatingPointState consente al chiamante di eseguire operazioni a virgola mobile proprie, ma tale chiamante deve ripristinare il contesto a virgola mobile precedente non volatile non appena vengono eseguite le operazioni a virgola mobile. Qualsiasi routine che chiama KeSaveFloatingPointState deve chiamare KeRestoreFloatingPointState prima che la routine restituisca il controllo.
Se la chiamata a KeSaveFloatingPointState ha esito positivo, i dati in FloatSave sono opachi per il chiamante. Il chiamante non deve rilasciare la memoria allocata per questi dati fino a dopo la chiamata a KeRestoreFloatingPointState.
In Windows Vista e versioni precedenti di Windows, una chiamata KeSaveFloatingPointState e la chiamata KeRestoreFloatingPointState corrispondente devono essere eseguite in un'area sorvegliata. Vale a dire, la routine KeEnterGuardedRegion deve essere chiamata prima della chiamata a KeSaveFloatingPointState e la routine KeLeaveGuardedRegion deve essere chiamata dopo la chiamata a KeRestoreFloatingPointState . Non esiste alcun requisito di questo tipo in Windows 7 e versioni successive di Windows.
Per motivi di prestazioni, i driver devono evitare di eseguire operazioni a virgola mobile, a meno che non sia assolutamente necessario. L'overhead del salvataggio e del ripristino dello stato a virgola mobile non volatile del thread corrente comporta una riduzione delle prestazioni di qualsiasi driver che esegue operazioni a virgola mobile.
Requisiti
Requisito | Valore |
---|---|
Client minimo supportato | Disponibile a partire da Windows 2000. |
Piattaforma di destinazione | Universale |
Intestazione | wdm.h (include Wdm.h, Ntddk.h, Ntifs.h) |
Libreria | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | <= DISPATCH_LEVEL |
Regole di conformità DDI | HwStorPortProhibitedDDDIs(storport), IrqlKeDispatchLte(wdm) |