Поделиться через


Функция 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_FULL или CONTEXT_ALL. Его необходимо указать отдельно, если требуется контекст XState.
 

[out, optional] Context

Указатель на переменную, которая получает адрес инициализированной структуры CONTEXT в буфере.

Примечание Из-за требований к выравниванию структур CONTEXT значение, возвращаемое в контексте , может не находиться в начале предоставленного буфера.
 

[in, out] ContextLength

На входных данных указывает длину буфера, на который указывает buffer, в байтах. Если буфер недостаточно велик для хранения указанных частей CONTEXT, функция завершается ошибкой, GetLastError возвращает ERROR_INSUFFICIENT_BUFFER, а параметру ContextLength присваивается требуемый размер буфера. Если функция завершается сбоем с ошибкой, отличной от ERROR_INSUFFICIENT_BUFFER, содержимое ContextLength не определено.

Возвращаемое значение

Эта функция возвращает значение TRUE в случае успешного выполнения, в противном случае — FALSE. Дополнительные сведения об ошибке можно получить, вызвав GetLastError.

Комментарии

InitializeContext можно использовать для инициализации структуры CONTEXT в буфере с требуемыми характеристиками размера и выравнивания. Эта подпрограмма является обязательной, если указан CONTEXT_XSTATEContextFlag , так как требуемый размер контекста и выравнивание могут изменяться в зависимости от того, какие функции процессора включены в системе.

Сначала вызовите эту функцию с параметром ContextFlags , равным максимальному количеству функций, которые вы будете использовать, а для параметра Buffer задано значение NULL. Функция возвращает требуемый размер буфера в байтах в параметре ContextLength . Выделите достаточно места для данных в буфере и вызовите функцию еще раз, чтобы инициализировать контекст. После успешного выполнения этой подпрограммы член ContextFlags структуры Контекста инициализируется, но оставшееся содержимое структуры не определено. Некоторые биты, указанные в параметре ContextFlags, могут не быть заданы в Context-ContextFlags>, если они не поддерживаются системой. Впоследствии приложения могут удалять, но никогда не должны добавлять биты из элемента ContextFlagscontext.

Windows 7 с пакетом обновления 1 (SP1) и Windows Server 2008 R2 с пакетом обновления 1 (SP1): API AVX впервые реализован в Windows 7 с пакетом обновления 1 (SP1) и Windows Server 2008 R2 с пакетом обновления 1 (SP1). Так как пакет SDK для с пакетом обновления 1 (SP1) отсутствует, это означает, что нет доступных заголовков и файлов библиотек для работы. В этом случае вызывающий объект должен объявить необходимые функции из этой документации и получить указатели на них с помощью GetModuleHandle на Kernel32.dll, а затем вызовы GetProcAddress. Дополнительные сведения см. в статье Работа с контекстом XState .

Требования

Требование Значение
Минимальная версия клиента Windows 7 с пакетом обновления 1 (SP1) [классические приложения | Приложения UWP]
Минимальная версия сервера Windows Server 2008 R2 с пакетом обновления 1 (SP1) [классические приложения | Приложения UWP]
Целевая платформа Windows
Header winbase.h (включая Windows.h)
Библиотека Kernel32.lib
DLL Kernel32.dll

См. также

КОНТЕКСТЕ

CopyContext

Intel AVX

Работа с контекстом XState