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 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。 可能的錯誤傳回值包括下列各項:
傳回碼 | Description |
---|---|
|
記憶體配置作業失敗。 |
備註
在支援 XSAVE 和 XRSTOR 指令的 x86 處理器上,這些指令提供彈性的機制來儲存和還原擴充處理器狀態資訊。 KeSaveExtendedProcessorState 如果可用,則會使用這些指示。
若要還原 KeSaveExtendedProcessorState 所儲存的擴充處理器狀態,請呼叫 KeRestoreExtendedProcessorState 例程。
Mask 參數會指定要儲存其狀態的擴充處理器功能。 KeRestoreExtendedProcessorState 呼叫只會還原儲存狀態的 KeSaveExtendedProcessorState 呼叫所儲存的擴充處理器狀態。
核心模式程式代碼必須先儲存擴充處理器功能的狀態,才能使用該功能,而且必須在結束之前還原狀態。
中斷服務例程 (ISR) 在嚴重時間限制下執行,通常防止它們使用擴充處理器功能。 不過,ISR 可以排程使用一或多個擴充處理器功能的延遲過程調用 (DPC) 。 DPC 例程必須儲存和還原擴充功能的狀態,以保留執行例程之進程位址空間的中斷程序內容。
KeSaveFloatingPointState 和 KeRestoreFloatingPointState 例程只會儲存和還原 (x87/MMX 註冊) 和 SSE 狀態的浮點狀態。
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | 可在 Windows 7 和更新版本的 Windows 中使用。 |
目標平台 | Universal |
標頭 | wdm.h (包括 Wdm.h、Ntddk.h、Ntifs.h) |
程式庫 | Ntoskrnl.lib |
Dll | Ntoskrnl.exe |
IRQL | <= DISPATCH_LEVEL |