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 结构的缓冲区的指针。 此参数可以 NULL 来确定保存具有指定 ContextFlags上下文记录所需的缓冲区大小。

ContextFlags

一个值,该值指示应初始化 上下文 结构的哪些部分。 此参数影响初始化 上下文 结构的大小。

注释CONTEXT_XSTATE 不属于 CONTEXT_FULLCONTEXT_ALL。 如果需要 XState 上下文,则必须单独指定它。
 

[out, optional] Context

指向一个变量的指针,该变量接收 缓冲区中初始化的 CONTEXT 结构的地址。

注意 由于 CONTEXT 结构的对齐要求,Context 中返回的值可能不在提供的缓冲区的开头。
 

[in, out] ContextLength

在输入时,指定 缓冲区所指向的缓冲区长度(以字节为单位)。 如果缓冲区不够大,无法包含 CONTEXT的指定部分,则函数将失败,GetLastError 返回 ERROR_INSUFFICIENT_BUFFERContextLength 设置为所需的缓冲区大小。 如果函数失败并出现除 ERROR_INSUFFICIENT_BUFFER以外的错误,则未定义 ContextLength 的内容。

XStateCompactionMask

提供 XState 压缩掩码,用于分配 上下文 结构。 仅当 CONTEXT_XSTATE 提供给 ContextFlags 并且系统在压缩模式下启用了 XState 时,才使用此参数。

返回值

如果成功,此函数返回 true ,否则 FALSE。 若要获取扩展的错误信息,请调用 GetLastError

言论

InitializeContext 可用于初始化缓冲区中具有所需大小和对齐特征的 CONTEXT 结构。 如果指定了 CONTEXT_XSTATEContextFlag,则此例程是必需的,因为所需的上下文大小和对齐方式可能会根据系统上启用的处理器功能而更改。

首先,使用 ContextFlags 参数调用此函数,并将其设置为将使用的最大功能数,并将 Buffer 参数 NULL。 该函数返回 ContextLength 参数中所需的缓冲区大小(以字节为单位)。 为 缓冲区 中的数据分配足够的空间,并再次调用函数以初始化 上下文。 成功完成此例程后,ContextFlagsContext 结构的成员初始化,但结构的其余内容未定义。 ContextFlags 参数中指定的某些位可能无法在 Context中设置 ->ContextFlags(如果系统不支持这些位)。 应用程序随后可能会删除,但绝不必须从 ContextFlagsCONTEXT成员中添加位。

具有 SP1 和 Windows Server 2008 R2 的 Windows 7 SP1:AVX API 首先在 Windows 7 上实现 SP1 和具有 SP1 的 Windows Server 2008 R2。 由于没有适用于 SP1 的 SDK,这意味着没有可用的标头和库文件可供使用。 在这种情况下,调用方必须声明本文档中所需的函数,并使用 GetModuleHandle“Kernel32.dll”获取指向它们的指针,然后调用 getProcAddress。 有关详细信息,请参阅 使用 XState 上下文

在压缩模式下启用 XState 时,指定仅包含已启用 XState 组件的子集的 XStateCompactionMask 可以减少存储 上下文所需的缓冲区大小。 如果系统启用了许多 XState 组件,但这特别有用,但 上下文 将仅用于影响少量 XState 组件。 可以通过调用 GetEnabledXStateFeatures来获取启用的完整 XState 组件集。 此函数将指定的 XState 压缩掩码复制到 XState 标头中的相关位置。

要求

要求 价值
最低支持的客户端 Windows 10 内部版本 20348
支持的最低服务器 Windows 10 内部版本 20348
标头 winbase.h

另请参阅

CONTEXT

CopyContext

Intel AVX

使用 XState 上下文