次の方法で共有


InitializeContext2 関数 (winbase.h)

XSTATE 圧縮マスクを指定するオプションを使用して、必要なサイズと配置を使用してバッファー内の CONTEXT 構造体を初期化します。

構文

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

パラメーター

[out, optional] Buffer

CONTEXT 構造体を初期化するバッファーへのポインター。 指定した ContextFlags を持つコンテキスト レコードを保持するために必要なバッファー サイズを決定するには、このパラメーターを NULL にできます。

ContextFlags

Context 構造体のどの部分を初期化するかを示す値。 このパラメーターは、初期化された コンテキスト 構造体のサイズに影響します。

CONTEXT_XSTATECONTEXT_FULLまたはCONTEXT_ALLの一部ではないことに注意してください。 XState コンテキストが必要な場合は、個別に指定する必要があります。
 

[out, optional] Context

Buffer 内で初期化された CONTEXT 構造体のアドレスを受け取る変数へのポインター。

手記CONTEXT 構造体のアラインメント要件により、Context で返される値が、指定されたバッファーの先頭にない場合があります。
 

[in, out] ContextLength

入力時に、 Buffer が指すバッファーの長さをバイト単位で指定します。 バッファーが CONTEXT の指定した部分を格納するのに十分な大きさでない場合、関数は失敗し、GetLastErrorはERROR_INSUFFICIENT_BUFFERを返し、ContextLength はバッファーの必要なサイズに設定されます。 ERROR_INSUFFICIENT_BUFFER以外のエラーで関数が失敗した場合、ContextLength の内容は未定義です。

XStateCompactionMask

Context 構造体を割り当てるときに使用する XState 圧縮マスクを提供します。 このパラメーターは、 CONTEXT_XSTATEContextFlags に指定され、システムで圧縮モードで XState が有効になっている場合にのみ使用されます。

戻り値

この関数は成功した場合 は TRUE を返し、それ以外の場合 は FALSE を返します。 拡張エラー情報を取得するには、GetLastError呼び出します。

備考

InitializeContext を使用して、必要なサイズとアラインメント特性を使用してバッファー内の CONTEXT 構造体を初期化できます。 このルーチンは、必要なコンテキスト サイズとアラインメントがシステムで有効になっているプロセッサ機能に応じて変更される可能性があるため、 CONTEXT_XSTATEContextFlag が指定されている場合に必要です。

まず、 ContextFlags パラメーターを使用する機能の最大数に設定し、 Buffer パラメーターを NULL に設定して、この関数を呼び出します。 この関数は、 ContextLength パラメーターで必要なバッファー サイズをバイト単位で返します。 バッファー内のデータに十分な領域を割り当て、もう一度関数を呼び出してコンテキストを初期化します。 このルーチンが正常に完了すると、Context 構造体の ContextFlags メンバーが初期化されますが、構造体の残りの内容は未定義になります。 ContextFlags パラメーターで指定された一部のビットは、システムでサポートされていない場合、Context->ContextFlags で設定できない可能性があります。 その後、アプリケーションは CONTEXTの 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 コンテキストの操作 を参照してください。

XState が圧縮モードで有効になっている場合、有効な XState コンポーネントのサブセットのみを含む XStateCompactionMask を指定すると、 コンテキストを格納するために必要なバッファー サイズを小さくできます。 これは、システムで多数の XState コンポーネントが有効になっているが、 コンテキスト を使用して少数の XState コンポーネントにのみ影響を与える場合に特に便利です。 有効な XState コンポーネントの完全なセットは、 GetEnabledXStateFeatures を呼び出すことによって取得できます。 この関数は、指定された XState 圧縮マスクを XState ヘッダー内の関連する場所にコピーします。

必要条件

要件 価値
サポートされる最小クライアント Windows 10 ビルド 20348
サポートされている最小のサーバー Windows 10 ビルド 20348
Header winbase.h
Library kernel32。Lib

関連項目

CONTEXT

CopyContext

Intel AVX

XState コンテキストの操作