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


EFI_RNG_PROTOCOL. GetRNG

Извлекает значение создания случайного числа (RNG).

Синтаксис

typedef EFI_STATUS (EFIAPI *EFI_RNG_GET_RNG) (
    IN  struct _EFI_RNG_PROTOCOL    *This,
    IN  EFI_RNG_ALGORITHM           *RNGAlgorithm, OPTIONAL
    IN  UINTN                       RNGValueLength,
    OUT UINT8                       *RNGValue
    );

Параметры

Это
[in] Указатель на экземпляр EFI_RNG_PROTOCOL .

RNGAlgorithm
[in] Указатель на EFI_RNG_ALGORITHM, который определяет используемый алгоритм RNG. Если этот параметр имеет значение NULL, будет использоваться алгоритм по умолчанию, поддерживаемый драйвером.

RNGValueLength
[in] Длина (в байтах) буфера, возвращаемого значением RNGValue.

RNGValue
[in] Указатель на буфер, который будет содержать значение RNG. Значение выделяется этой функцией с помощью EFI_BOOT_SERVICES-AllocatePool>(), и за освобождение памяти с помощью EFI_BOOT_SERVICES-FreePool>() отвечает вызывающий объект.

Комментарии

Минимальный размер RNGValue составляет 32 байта.

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

Возвращает один из следующих кодов состояния.

Код состояния Описание
EFI_SUCCESS Функция успешно вернула значение RNG.
EFI_INVALID_PARAMETER Если возможно несколько алгоритмов, RNGAlgorithm имеет значение NULL.
EFI_UNSUPPORTED Алгоритм, заданный параметром RNGAlgorithm , не поддерживается этим драйвером.
EFI_DEVICE_ERROR Не удалось получить значение RNG из-за ошибки оборудования или встроенного ПО.
EFI_NOT_READY Недостаточно данных об энтропии.
EFI_OUT_OF_RESOURCES Драйвер не может выделить память для значения RNG.

Требования

Заголовка: Создано пользователем