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


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

Инициализирует структуру контекста внутри буфера с необходимым размером и выравниванием с параметром для указания маски сжатия 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 значение, возвращаемое в контексте , может не находиться в начале предоставленного буфера.
 

[in, out] ContextLength

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

XStateCompactionMask

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

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

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

Замечания

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

Сначала вызовите эту функцию с параметром ContextFlags , равным максимальному количеству функций, которые вы будете использовать, и параметр буфера NULL. Функция возвращает требуемый размер буфера в байтах в параметре ContextLength. Выделите достаточно места для данных в буфере и снова вызовите функцию, чтобы инициализировать контекста. После успешного завершения этой процедуры ContextFlags член структуры контекста контекста инициализируется, но оставшееся содержимое структуры не определено. Некоторые биты, указанные в параметре contextFlags ContextFlags, могут не быть заданы в контексте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
заголовка winbase.h

См. также

CONTEXT

CopyContext

Intel AVX

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