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
    );

参数

This
[in]指向EFI_RNG_PROTOCOL实例的指针。

RNGAlgorithm
[in]指向标识要使用的 RNG 算法的EFI_RNG_ALGORITHM的指针。 如果此参数为 NULL,将使用驱动程序支持的默认算法。

RNGValueLength
[in]RNGValue 返回的缓冲区的长度(以字节为单位)。

RNGValue
[in]指向将包含 RNG 值的缓冲区的指针。 此值由此函数使用 EFI_BOOT_标准版RVICES-AllocatePool>()进行分配,并且调用方负责通过使用 EFI_BOOT_标准版RVICES-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 值分配内存。

要求

标头: 用户生成的