Функция должна обеспечивать захват FPU (сохраняя значения регистров MMX (ST) и XMM ). Ей передаются буфер для сохранения регистров, его размер, тип функции, использующей дополнительные регистры, осуществляющей её вызов, и дополнительные параметры, по которым можно судить о целесообразности захвата.
typedef BOOL CPCAPI CPC_Kernel_Fpu_Begin_Callback(BYTE *buf,CPC_SIZE_T sz, DWORD bl_len, DWORD op_type);
Значение 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. |
Коды возврата | Описание |
---|---|
TRUE | Захват сопроцессора был осуществлён. В этом случае провайдер вызовет функцию, использующую MMX, SSE2, SSSE3 или AVX, и после неё - функцию CPC_Kernel_Fpu_End_Callback . Различные типы функций провайдера работают с разными скоростями, и для целесообразности захвата FPU передаются как тип функции провайдера, так и количество обрабатываемых данных. |
FALSE | Захват не был осуществлён. В этом случае провайдер вызовет функцию, использующую только стандартный набор инструкций (универсальную). |
CPC_FAST_CODE ,CPC_Kernel_Fpu_End_Callback ,CPSetProvParam() ,CPCSetProvParam()