在緩衝區內初始化具有必要大小和對齊方式的 CONTEXT 結構,並可選擇指定 XSTATE 壓縮遮罩。
語法
BOOL InitializeContext2(
[out, optional] PVOID Buffer,
DWORD ContextFlags,
[out, optional] PCONTEXT *Context,
[in, out] PDWORD ContextLength,
ULONG64 XStateCompactionMask
);
參數
[out, optional] Buffer
緩衝區的指標,可在其中初始化 CONTEXT 結構。 此參數可以是 Null ,以判斷具有指定 ContextFlags 的內容記錄保留所需的緩衝區大小。
ContextFlags
指出 應該 初始化內容結構的哪些部分的值。 此參數 會影響初始化 內容結構的大小。
[out, optional] Context
變數的指標,可接收 Buffer 內初始化 CONTEXT 結構位址。
[in, out] ContextLength
輸入時,指定 Buffer 所指向的緩衝區長度,以位元組為單位。 如果緩衝區不夠大,無法包含 CONTEXT 的指定部分,函式會失敗, GetLastError 會傳回 ERROR_INSUFFICIENT_BUFFER,而 ContextLength 會設定為緩衝區所需的大小。 如果函式失敗,並發生 ERROR_INSUFFICIENT_BUFFER 以外的錯誤,則 ContextLength 的內容會未定義。
XStateCompactionMask
提供配置 內容 結構時要使用的 XState 壓縮遮罩。 只有在提供給 ContextFlagsCONTEXT_XSTATE且系統在壓縮模式中啟用 XState 時,才會使用此參數。
傳回值
如果成功,此函式會傳回 TRUE ,否則會傳回 FALSE。 若要取得擴充的錯誤資訊,請呼叫 GetLastError。
言論
InitializeContext 可用來初始化緩衝區內的 CONTEXT 結構,並具有所需的大小和對齊特性。 如果指定 CONTEXT_XSTATEContextFlag ,則需要此常式,因為必要的內容大小和對齊方式可能會根據系統上啟用的處理器功能而變更。
首先,呼叫此函式,並將 ContextFlags 參數設定為您將使用的功能數目上限,並將 Buffer 參數設定為 NULL。 函式會在 ContextLength 參數中傳回所需的緩衝區大小 (以位元組為單位)。 為 Buffer 中的資料配置足夠的空間,並再次呼叫函式來初始化 Context。 成功完成此常式時,會初始化 Context 結構的 ContextFlags 成員,但結構的其餘內容尚未定義。 如果系統不支援,則可能不會在 Context-ContextFlags> 參數中指定的某些位設定這些位。 應用程式隨後可能會從 CONTEXT 的 ContextFlags 成員移除,但絕不能新增位。
Windows 7 SP1 和 Windows Server 2008 R2 SP1: AVX API 首先在具有 SP1 的 Windows 7 和具有 SP1 的 Windows Server 2008 R2 上實作。 由於沒有適用於SP1的SDK,這表示沒有可用的標頭和連結庫檔案可供使用。 在此情況下,呼叫端必須從本檔宣告所需的函式,並使用 「Kernel32.dll」 上的 GetModuleHandle 取得這些函式的指標,然後呼叫 GetProcAddress。 如需詳細資訊,請參閱 使用 XState 內容 。
在壓縮模式中啟用 XState 時,指定僅包含已啟用 XState 元件子集的 XStateCompactionMask 可以減少儲存 內容所需的緩衝區大小。 如果系統已啟用許多 XState 元件,這特別有用,但 內容 只會用來影響少數 XState 元件。 您可以呼叫 GetEnabledXStateFeatures 來取得完整的已啟用 XState 元件集。 此函式會將指定的 XState 壓縮遮罩複製到 XState 標頭中的相關位置。
要求
| 要求 | 價值 |
|---|---|
| 最低支援的用戶端 | Windows 10 組建 20348 |
| 支援的最低伺服器 | Windows 10 組建 20348 |
| Header | winbase.h |
| Library | 內核32。圖書館 |