Função KeSaveExtendedProcessorState (wdm.h)
A rotina KeSaveExtendedProcessorState salva informações de estado estendido do processador.
Sintaxe
NTSTATUS KeSaveExtendedProcessorState(
[in] ULONG64 Mask,
[out] PXSTATE_SAVE XStateSave
);
Parâmetros
[in] Mask
Uma máscara de recursos de 64 bits. Os bits nessa máscara identificam os estados de recurso do processador estendido a serem salvos. Se um bit de máscara for um, a rotina salvará o estado do recurso identificado por esse bit. Se um bit de máscara for zero, o estado do recurso correspondente não será salvo. Essa máscara não deve identificar os recursos estendidos do processador que o sistema operacional não habilitou. Para obter uma máscara dos recursos habilitados, chame a rotina RtlGetEnabledExtendedFeatures .
Um chamador pode definir esse parâmetro como OR bit a bit de um ou mais dos seguintes bits de sinalizador XSTATE_MASK_XXX :
Valor | Significado |
---|---|
XSTATE_MASK_LEGACY_FLOATING_POINT | A extensão de ponto flutuante (x87/MMX). |
XSTATE_MASK_LEGACY_SSE | A EXTENSÃO SIMD de streaming (SSE). |
XSTATE_MASK_LEGACY | As extensões x87/MMX e SSE. |
XSTATE_MASK_GSSE | A extensão SSE da Ponte Intel Sandy (anteriormente Gesher). |
XSTATE_MASK_AVX512 | Extensão AVX-512 |
XSTATE_MASK_MPX | Extensão MPX |
XSTATE_MASK_AMX_TILE_CONFIG | Extensão AMX (configuração) |
XSTATE_MASK_AMX_TILE_DATA | Extensão AMX (dados) |
[out] XStateSave
Um ponteiro para um buffer alocado pelo chamador no qual a rotina grava uma estrutura XSTATE_SAVE . Essa estrutura contém as informações de estado salvas para os recursos de processador estendidos indicados pelo parâmetro Mask . O buffer deve ser grande o suficiente para conter essa estrutura.
Retornar valor
KeSaveExtendedProcessorState retornará STATUS_SUCCESS se a chamada for bem-sucedida. Os possíveis valores retornados por erro incluem o seguinte:
Código de retorno | Descrição |
---|---|
|
Falha em uma operação de alocação de memória. |
Comentários
Em processadores baseados em x86 que dão suporte às instruções XSAVE e XRSTOR, essas instruções fornecem um mecanismo flexível para salvar e restaurar informações de estado estendido do processador. KeSaveExtendedProcessorState usa essas instruções se elas estiverem disponíveis.
Para restaurar o estado estendido do processador que foi salvo por KeSaveExtendedProcessorState, chame a rotina KeRestoreExtendedProcessorState .
O parâmetro Mask especifica os recursos de processador estendidos cujo estado deve ser salvo. Uma chamada KeRestoreExtendedProcessorState restaura apenas o estado do processador estendido que foi salvo pela chamada KeSaveExtendedProcessorState que salvou o estado.
O código do modo kernel deve salvar o estado de um recurso de processador estendido antes de usar esse recurso e deve restaurar o estado antes de sair.
As ISRs (rotinas de serviço de interrupção) são executadas em restrições de tempo severas que normalmente os impedem de usar recursos estendidos do processador. No entanto, um ISR pode agendar uma DPC (chamada de procedimento adiado) que usa um ou mais recursos de processador estendidos. A rotina DPC deve salvar e restaurar o estado dos recursos estendidos para preservar o contexto do programa interrompido em cujo espaço de endereço de processo a rotina é executada.
As rotinas KeSaveFloatingPointState e KeRestoreFloatingPointState salvam e restauram apenas o estado de ponto flutuante (os registros x87/MMX) e o estado SSE.
Requisitos
Requisito | Valor |
---|---|
Cliente mínimo com suporte | Disponível no Windows 7 e versões posteriores do Windows. |
Plataforma de Destino | Universal |
Cabeçalho | wdm.h (include Wdm.h, Ntddk.h, Ntifs.h) |
Biblioteca | Ntoskrnl.lib |
DLL | Ntoskrnl.exe |
IRQL | <= DISPATCH_LEVEL |