Função KeSaveFloatingPointState (wdm.h)
A rotina KeSaveFloatingPointState salva o contexto de ponto flutuante nãovolatile para que o chamador possa realizar operações de ponto flutuante.
Sintaxe
NTSTATUS KeSaveFloatingPointState(
[out] PKFLOATING_SAVE FloatSave
);
Parâmetros
[out] FloatSave
Ponteiro para um buffer residente alocado pelo chamador, que deve ser pelo menos sizeof(KFLOATING_SAVE).
Retornar valor
KeSaveFloatingPointState retornará STATUS_SUCCESS se salvou o contexto de ponto flutuante do thread atual e configurou um novo contexto de ponto flutuante para o chamador. Caso contrário, ele retornará um dos seguintes códigos de status de erro.
Código de retorno | Descrição |
---|---|
|
O sistema é configurado para usar a emulação de ponto flutuante, em vez de fazer operações de ponto flutuante nos processadores. |
|
KeSaveFloatingPointState não pôde alocar memória suficiente para salvar o contexto de ponto flutuante do thread atual. |
Comentários
Uma chamada bem-sucedida para KeSaveFloatingPointState permite que o chamador realize operações de ponto flutuante próprias, mas esse chamador deve restaurar o contexto de ponto flutuante nãovolatile anterior assim que suas operações de ponto flutuante forem feitas. Qualquer rotina que chame KeSaveFloatingPointState deve chamar KeRestoreFloatingPointState antes que essa rotina retorne o controle.
Se a chamada para KeSaveFloatingPointState for bem-sucedida, os dados em FloatSave serão opacos para o chamador. O chamador não deve liberar a memória alocada para esses dados até depois da chamada para KeRestoreFloatingPointState.
No Windows Vista e em versões anteriores do Windows, uma chamada KeSaveFloatingPointState e a chamada keRestoreFloatingPointState correspondente devem ocorrer em uma região protegida. Ou seja, a rotina KeEnterGuardedRegion deve ser chamada antes que KeSaveFloatingPointState seja chamada e a rotina KeLeaveGuardedRegion deve ser chamada após KeRestoreFloatingPointState ser chamada. Esse requisito não existe no Windows 7 e em versões posteriores do Windows.
Por motivos de desempenho, os drivers devem evitar fazer operações de ponto flutuante, a menos que seja absolutamente necessário. A sobrecarga de salvar e restaurar o estado de ponto flutuante não volátil do thread atual degrada o desempenho de qualquer driver que faça operações de ponto flutuante.
Requisitos
Requisito | Valor |
---|---|
Cliente mínimo com suporte | Disponível a partir do Windows 2000. |
Plataforma de Destino | Universal |
Cabeçalho | wdm.h (include Wdm.h, Ntddk.h, Ntifs.h) |
Biblioteca | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | <= DISPATCH_LEVEL |
Regras de conformidade de DDI | HwStorPortProhibitedDIs(storport), IrqlKeDispatchLte(wdm) |