次の方法で共有


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
[入力] EFI_RNG_PROTOCOL インスタンスへのポインター。

RNGAlgorithm
[入力] 使用する RNG アルゴリズムを識別する EFI_RNG_ALGORITHM へのポインター。 このパラメーターが NULL の場合、ドライバーでサポートされているデフォルトのアルゴリズムが使用されます。

RNGValueLength
[入力] RNGValue によって返されるバッファーの長さ (バイト単位)。

RNGValue
[入力] RNG 値を含むバッファーへのポインター。 値は、EFI_BOOT_Standard Edition RVICES->AllocatePool() を使用してこの関数によって割り当てられます。呼び出し元は、EFI_BOOT_Standard Edition 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 値にメモリを割り当てることができません。

要件

ヘッダー: ユーザー生成