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
STATUS_INSUFFICIENT_RESOURCES
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

Confira também

KeRestoreExtendedProcessorState

KeRestoreFloatingPointState

KeSaveFloatingPointState

RtlGetEnabledExtendedFeatures

XSTATE_SAVE