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


Функция InitializeContext2 (winbase.h)

Инициализирует структуру CONTEXT внутри буфера с необходимым размером и выравниванием с параметром для указания маски сжатия XSTATE.

Синтаксис

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

[out, optional] Context

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

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

[in, out] ContextLength

При входных данных указывает длину буфера, на который указывает буфер, в байтах. Если буфер недостаточно велик, чтобы содержать указанные части КОНТЕКСТа, функция завершается ошибкой, GetLastError возвращает ERROR_INSUFFICIENT_BUFFER, а ContextLength — требуемый размер буфера. Если функция завершается ошибкой, отличной от ERROR_INSUFFICIENT_BUFFER, содержимое ContextLength не определено.

XStateCompactionMask

Предоставляет маску сжатия XState, которая будет использоваться при выделении структуры контекста . Этот параметр используется только в том случае, если CONTEXT_XSTATE предоставляется в ContextFlags , и система включает XState в режиме сжатия.

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

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

Замечания

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

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

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 ".

Если XState включен в режиме сжатия, укажите XStateCompactionMask , содержащий только подмножество компонентов XState, может уменьшить размер буфера, необходимый для хранения контекста. Это особенно полезно, если в системе включено множество компонентов XState, но контекст будет использоваться только для влияния на небольшое количество компонентов XState. Полный набор компонентов XState можно получить путем вызова GetEnabledXStateFeatures. Эта функция копирует указанную маску сжатия XState в соответствующее расположение в заголовке XState.

Требования

Требование Ценность
Минимальный поддерживаемый клиент Сборка Windows 10 20348
минимальный поддерживаемый сервер Сборка Windows 10 20348
Header winbase.h
Library kernel32. Lib

См. также

CONTEXT

CopyContext

Intel AVX

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