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

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

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

[in, out] ContextLength

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

返回值

如果成功,此函数返回 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 上下文

要求

要求 价值
最低支持的客户端 Windows 7 SP1 [桌面应用 |UWP 应用]
支持的最低服务器 带 SP1 的 Windows Server 2008 R2 [桌面应用 |UWP 应用]
目标平台 窗户
标头 winbase.h (包括 Windows.h)
Kernel32.lib
DLL Kernel32.dll

另请参阅

CONTEXT

CopyContext

Intel AVX

使用 XState 上下文