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


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

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

Синтаксис

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

[in, out] ContextLength

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

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

Эта функция возвращает 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.

Требования

Требование Ценность
минимальные поддерживаемые клиентские Windows 7 с пакетом обновления 1 (SP1) [классические приложения | Приложения UWP]
минимальный поддерживаемый сервер Windows Server 2008 R2 с пакетом обновления 1 (SP1) [классические приложения | Приложения UWP]
целевая платформа Виндоус
заголовка winbase.h (включая Windows.h)
библиотеки Kernel32.lib
DLL Kernel32.dll

См. также

CONTEXT

CopyContext

Intel AVX

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