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 ,以确定保存具有指定 ContextFlag 的上下文记录所需的缓冲区大小。

[in] ContextFlags

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

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

[out, optional] Context

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

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

[in, out] ContextLength

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

返回值

如果成功,此函数返回 TRUE ,否则返回 FALSE。 要获得更多的错误信息,请调用 GetLastError。

注解

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

首先,调用此函数,将 ContextFlags 参数设置为将使用的最大特征数, 并将 Buffer 参数设置为 NULL。 函数在 ContextLength 参数中返回所需的缓冲区大小(以字节为单位)。 为 缓冲区 中的数据分配足够的空间,并再次调用 函数来初始化 上下文。 成功完成此例程后,将初始化 Context 结构的 ContextFlags 成员,但结构的其余内容未定义。 在 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 上下文

要求

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

另请参阅

CONTEXT

CopyContext

Intel AVX

使用 XState 上下文