КриптоПро CSP  

CPC_Kernel_Fpu_Begin_Callback

Описание функции захвата FPU в режиме ядра ОС.

Функция должна обеспечивать захват FPU (сохраняя значения регистров MMX (ST) и XMM ). Ей передаются буфер для сохранения регистров, его размер, тип функции, использующей дополнительные регистры, осуществляющей её вызов, и дополнительные параметры, по которым можно судить о целесообразности захвата.

typedef BOOL CPCAPI CPC_Kernel_Fpu_Begin_Callback(BYTE *buf,CPC_SIZE_T sz, DWORD bl_len, DWORD op_type);

Аргументы

buf
[in] Невыровненный буфер, предоставляемый провайдером для сохранения дополнительных регистров.
sz
[in] Размер буфера, переданного провайдером для сохранения дополнительных регистров.
bl_len
[in] Размер данных, обрабатываемых функцией, запросившей сохранение регистров.
op_type
[in] Тип функции, запросившей сохранение регистров. Тип может быть одним из четырёх:
Значение op_type Тип функции
CSP_OPERATION_CIPHER1 Нераспараллеливаемые функции шифрования по ГОСТ 28147-89.
CSP_OPERATION_CIPHER2 Распараллеливаемые функции шифрования по ГОСТ 28147-89.
CSP_OPERATION_IMIT Функции выработки имитовставки по ГОСТ 28147-89.
CSP_OPERATION_HASH Функции хэширования по ГОСТ Р 34.11-94 и ГОСТ Р 34.11-2012.

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

результат захвата сопроцессора FPU.
Коды возвратаОписание
TRUEЗахват сопроцессора был осуществлён. В этом случае провайдер вызовет функцию, использующую MMX, SSE2, SSSE3 или AVX, и после неё - функцию CPC_Kernel_Fpu_End_Callback . Различные типы функций провайдера работают с разными скоростями, и для целесообразности захвата FPU передаются как тип функции провайдера, так и количество обрабатываемых данных.
FALSEЗахват не был осуществлён. В этом случае провайдер вызовет функцию, использующую только стандартный набор инструкций (универсальную).

См. также

CPC_FAST_CODE ,CPC_Kernel_Fpu_End_Callback ,CPSetProvParam() ,CPCSetProvParam()