KeSaveExtendedProcessorState 함수(wdm.h)
KeSaveExtendedProcessorState 루틴은 확장된 프로세서 상태 정보를 저장합니다.
구문
NTSTATUS KeSaveExtendedProcessorState(
[in] ULONG64 Mask,
[out] PXSTATE_SAVE XStateSave
);
매개 변수
[in] Mask
64비트 기능 마스크. 이 마스크의 비트는 저장할 확장 프로세서 기능 상태를 식별합니다. 마스크 비트가 1이면 루틴은 이 비트로 식별되는 기능의 상태를 저장합니다. 마스크 비트가 0이면 해당 기능의 상태가 저장되지 않습니다. 이 마스크는 운영 체제가 사용하도록 설정되지 않은 확장 프로세서 기능을 식별해서는 안됩니다. 활성화된 기능의 마스크를 가져오려면 RtlGetEnabledExtendedFeatures 루틴을 호출합니다 .
호출자는 다음 XSTATE_MASK_XXX 플래그 비트 중 하나 이상의 비트 OR로 이 매개 변수를 설정할 수 있습니다.
값 | 의미 |
---|---|
XSTATE_MASK_LEGACY_FLOATING_POINT | 부동 소수점 확장(x87/MMX)입니다. |
XSTATE_MASK_LEGACY_SSE | 스트리밍 SIMD 확장(SSE)입니다. |
XSTATE_MASK_LEGACY | x87/MMX 및 SSE 확장 모두. |
XSTATE_MASK_GSSE | Intel Sandy Bridge(이전의 Gesher) SSE 확장. |
XSTATE_MASK_AVX512 | AVX-512 확장 |
XSTATE_MASK_MPX | MPX 확장 |
XSTATE_MASK_AMX_TILE_CONFIG | AMX 확장(구성) |
XSTATE_MASK_AMX_TILE_DATA | AMX 확장(데이터) |
[out] XStateSave
루틴이 XSTATE_SAVE 구조를 작성하는 호출자가 할당한 버퍼에 대한 포인터입니다. 이 구조체에는 Mask 매개 변수로 표시된 확장 프로세서 기능에 대한 저장된 상태 정보가 포함됩니다. 버퍼는 이 구조를 포함할 수 있을 만큼 커야 합니다.
반환 값
KeSaveExtendedProcessorState 는 호출이 성공하면 STATUS_SUCCESS 반환합니다. 가능한 오류 반환 값은 다음과 같습니다.
반환 코드 | 설명 |
---|---|
|
메모리 할당 작업이 실패했습니다. |
설명
XSAVE 및 XRSTOR 명령을 지원하는 x86 기반 프로세서에서 이러한 지침은 확장 프로세서 상태 정보를 저장하고 복원하는 유연한 메커니즘을 제공합니다. KeSaveExtendedProcessorState 는 사용 가능한 경우 이러한 지침을 사용합니다.
KeSaveExtendedProcessorState에서 저장한 확장 프로세서 상태를 복원하려면 KeRestoreExtendedProcessorState 루틴을 호출합니다.
Mask 매개 변수는 상태를 저장할 확장 프로세서 기능을 지정합니다. KeRestoreExtendedProcessorState 호출은 상태를 저장한 KeSaveExtendedProcessorState 호출에 의해 저장된 확장 프로세서 상태만 복원합니다.
커널 모드 코드는 해당 기능을 사용하기 전에 확장 프로세서 기능의 상태를 저장해야 하며 종료하기 전에 상태를 복원해야 합니다.
ISR(인터럽트 서비스 루틴)은 일반적으로 확장 프로세서 기능을 사용하지 못하게 하는 심각한 시간 제약 조건에서 실행됩니다. 그러나 ISR은 하나 이상의 확장 프로세서 기능을 사용하는 DPC(지연 프로시저 호출)를 예약할 수 있습니다. DPC 루틴은 루틴이 실행되는 프로세스 주소 공간에서 중단된 프로그램의 컨텍스트를 유지하기 위해 확장된 기능의 상태를 저장하고 복원해야 합니다.
KeSaveFloatingPointState 및 KeRestoreFloatingPointState 루틴은 부동 소수점 상태(x87/MMX 레지스터) 및 SSE 상태만 저장하고 복원합니다.
요구 사항
요구 사항 | 값 |
---|---|
지원되는 최소 클라이언트 | Windows 7 및 이후 버전의 Windows에서 사용할 수 있습니다. |
대상 플랫폼 | 유니버설 |
헤더 | wdm.h(Wdm.h, Ntddk.h, Ntifs.h 포함) |
라이브러리 | Ntoskrnl.lib |
DLL | Ntoskrnl.exe |
IRQL | <= DISPATCH_LEVEL |