KeSaveExtendedProcessorState 函式 (wdm.h)
KeSaveExtendedProcessorState 例程會儲存延伸處理器狀態資訊。
語法
NTSTATUS KeSaveExtendedProcessorState(
[in] ULONG64 Mask,
[out] PXSTATE_SAVE XStateSave
);
參數
[in] Mask
64 位功能遮罩。 此遮罩中的位會識別要儲存的擴充處理器功能狀態。 如果遮罩位是其中一個,例程會儲存這個位所識別的功能狀態。 如果遮罩位為零,則不會儲存對應功能的狀態。 此遮罩不得識別作系統未啟用的擴充處理器功能。 若要取得已啟用功能的遮罩,請呼叫 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 桑迪橋(先前稱為 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 |