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
一个值,该值指示应初始化 上下文 结构的哪些部分。 此参数影响初始化的 上下文 结构的大小。
[out, optional] 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 |
另请参阅
反馈
https://aka.ms/ContentUserFeedback。
即将发布:在整个 2024 年,我们将逐步淘汰作为内容反馈机制的“GitHub 问题”,并将其取代为新的反馈系统。 有关详细信息,请参阅:提交和查看相关反馈