Функция должна обеспечивать захват 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 |
Коды возврата | Описание |
---|---|
TRUE | Захват сопроцессора был осуществлён. В этом случае провайдер вызовет функцию, использующую MMX или SSE, и после неё - функцию CPC_Kernel_Fpu_End_Callback . Различные типы функций провайдера работают с разными скоростями, и для целесообразности захвата FPU передаются как тип функции провайдера, так и количество обрабатываемых данных. |
FALSE | Захват не был осуществлён. В этом случае провайдер вызовет функцию, использующую только стандартный набор инструкций (универсальную). |
CPC_FAST_CODE ,CPC_Kernel_Fpu_End_Callback ,CPSetProvParam() ,CPCSetProvParam()