КриптоПро 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

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

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

См. также

CPC_FAST_CODE ,CPC_Kernel_Fpu_End_Callback ,CPSetProvParam() ,CPCSetProvParam()