Share via


InitializeContext 函式 (winbase.h)

使用必要的大小和對齊方式,初始化緩衝區內的 CONTEXT 結構。

語法

BOOL InitializeContext(
  [out, optional] PVOID    Buffer,
  [in]            DWORD    ContextFlags,
  [out, optional] PCONTEXT *Context,
  [in, out]       PDWORD   ContextLength
);

參數

[out, optional] Buffer

要在其中初始化 CONTEXT 結構的緩衝區指標。 這個參數可以是 NULL ,以判斷保存具有指定 ContextFlags 之內容記錄所需的緩衝區大小。

[in] ContextFlags

值,表示應該初始化 內容 結構的哪些部分。 此參數會影響初始化 之內容 結構的大小。

注意CONTEXT_XSTATE 不屬於 CONTEXT_FULLCONTEXT_ALL。 如果需要 XState 內容,則必須另外指定它。
 

[out, optional] Context

變數的指標,該變數會接收 Buffer 中初始化之 CONTEXT 結構的位址。

注意 由於 CONTEXT 結構的對齊需求, 在 Context 中傳回的值可能不在提供的緩衝區開頭。
 

[in, out] ContextLength

在輸入時,以位元組為單位指定 Buffer 所指向的緩衝區長度。 如果緩衝區不夠大,無法包含 CONTEXT 的指定部分,則函式會失敗, GetLastError 會傳回 ERROR_INSUFFICIENT_BUFFER而 ContextLength 會設定為所需的緩衝區大小。 如果函式失敗,並出現 ERROR_INSUFFICIENT_BUFFER以外的錯誤, 則 ContextLength 的內容是未定義的。

傳回值

如果成功,則此函式會傳回 TRUE ,否則傳回 FALSE。 若要取得擴充的錯誤資訊,請呼叫 GetLastError

備註

InitializeContext 可用來初始化緩衝區內具有所需大小和對齊特性的 CONTEXT 結構。 如果指定 了 CONTEXT_XSTATEContextFlag ,就需要此例程,因為必要的內容大小和對齊方式可能會根據系統上啟用的處理器功能而變更。

首先,呼叫此函式,並將 ContextFlags 參數設定為您將使用的功能數目上限,並將 Buffer 參數設定為 NULL。 函式會傳回 ContextLength 參數中所需的緩衝區大小,以位元組為單位。 為 Buffer 中的數據配置足夠的空間,並再次呼叫 函式來初始化 Context。 成功完成此例程時,會初始化 Context 結構的 ContextFlags 成員,但結構的其餘內容是未定義的。 如果系統不支援 ContextFlags 參數中指定的某些位,可能無法在 Context-ContextFlags> 中設定。 應用程式後續可能會移除,但絕不會從 CONTEXTFlags 成員新增位。

Windows 7 SP1 和 Windows Server 2008 R2 SP1: AVX API 會先在 Windows 7 上實作 SP1 和 Windows Server 2008 R2 SP1 。 由於沒有適用於SP1的SDK,這表示沒有可用的標頭和連結庫檔案可供使用。 在此情況下,呼叫端必須從這份檔宣告所需的函式,並使用 「Kernel32.dll」 上的 GetModuleHandle 取得它們的指標,然後呼叫 GetProcAddress。 如需詳細資訊,請參閱 使用 XState 內容

規格需求

需求
最低支援的用戶端 Windows 7 SP1 [傳統型應用程式 |UWP 應用程式]
最低支援的伺服器 Windows Server 2008 R2 SP1 [傳統型應用程式 |UWP 應用程式]
目標平台 Windows
標頭 winbase.h (包含 Windows.h)
程式庫 Kernel32.lib
DLL Kernel32.dll

另請參閱

上下文

CopyContext

Intel AVX

使用 XState 內容