Funzione KeRestoreFloatingPointState (wdm.h)
La routine KeRestoreFloatingPointState ripristina il contesto a virgola mobile nonvola salvato dalla chiamata precedente a KeSaveFloveFloatingPointState.
Sintassi
NTSTATUS KeRestoreFloatingPointState(
[in] PKFLOATING_SAVE FloatSave
);
Parametri
[in] FloatSave
Puntatore alla struttura KFLOATING_SAVE passata nella chiamata precedente a KeSaveFloatingPointState.
Valore restituito
KeRestoreFloatingPointState restituisce STATUS_SUCCESS.
Commenti
KeRestoreFloatingPointState è il reciproco di KeSaveFloatingPointState.
Qualsiasi routine che chiama KeSaveFloveFloatingPointState deve chiamare KeRestoreFloatingPointState prima che tale routine restituisca il controllo e deve essere in esecuzione allo stesso IRQL di quella da cui si è verificata la chiamata precedente a KeSaveFloatingPointState . L'errore di soddisfare una di queste condizioni causa un controllo di bug di sistema.
Il codice driver in modalità kernel deve assicurarsi che le chiamate a KeSaveFloatingPointState e KeRestoreFloatingPointState siano annidate correttamente. Questo è necessario in modo che, a ogni livello di annidamento, lo stato ripristinato dalla chiamata KeRestoreFloatingPointState sia lo stesso stato salvato dalla chiamata KeSaveFloatingPointState corrispondente. Per garantire il corretto annidamento, il codice driver in modalità kernel deve seguire queste regole:
- Una chiamata KeRestoreFloatingPointState che ripristina uno stato salvato deve essere eseguita nello stesso irQL della chiamata KeSaveFloveFloatingPointState che ha salvato lo stato.
- Se una coppia di chiamate KeSaveFloveFloatingPointState e KeRestoreFloatingPointState viene annidata all'interno di una coppia di chiamate KeSaveFloatingPointState e KeRestoreFloatingPointState, l'IRQL per le chiamate nidificate non deve essere inferiore a IRQL per le chiamate circostanti.
- In genere, la struttura di KFLOATING_SAVE allocata dal chiamante che contiene lo stato salvato da KeSaveFloatingPointState si trova nello stack. Lo stack mantiene naturalmente l'annidamento delle informazioni sullo stato salvate. Se il codice driver archivia lo stato in una posizione diversa dallo stack, il writer del driver deve prestare particolare attenzione per mantenere l'annidamento delle chiamate KeSaveFloatingPointState e KeRestoreFloatingPointState .
- La chiamata KeRestoreFloatingPointState che ripristina uno stato salvato deve essere eseguita nello stesso thread della chiamata KeSaveFloveFloatingPointState che ha salvato lo stato.
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 (vedere sezione Osservazioni) |