次の方法で共有


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_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 値用のメモリを割り当てることができません。

 

必要条件

ヘッダー: ユーザーが生成