LoadEnclaveData 関数 (enclaveapi.h)

CreateEnclave を呼び出して作成した初期化されていないエンクレーブにデータを読み込みます。

構文

BOOL LoadEnclaveData(
  [in]            HANDLE  hProcess,
  [in]            LPVOID  lpAddress,
  [in]            LPCVOID lpBuffer,
  [in]            SIZE_T  nSize,
  [in]            DWORD   flProtect,
  [in]            LPCVOID lpPageInformation,
  [in]            DWORD   dwInfoLength,
  [out]           PSIZE_T lpNumberOfBytesWritten,
  [out, optional] LPDWORD lpEnclaveError
);

パラメーター

[in] hProcess

エンクレーブが作成されたプロセスへのハンドル。

[in] lpAddress

データを読み込むエンクレーブ内のアドレス。

[in] lpBuffer

エンクレーブに読み込むデータへのポインター。

[in] nSize

エンクレーブに読み込むデータのサイズ (バイト単位)。 この値は、ページ サイズの整数の倍数である必要があります。

[in] flProtect

エンクレーブに追加するページに使用するメモリ保護。 メモリ保護値の一覧については、「 メモリ保護定数」を参照してください。 この値には、次の定数を含めてはいけません。

  • PAGE_GUARD
  • PAGE_NOCACHE
  • PAGE_WRITECOMBINE
  • PAGE_NOACCESS

この値には、次の表で説明するエンクレーブ固有の定数を含めることができます。

常時 説明
PAGE_ENCLAVE_THREAD_CONTROL このページには、スレッド制御構造体 (TCS) が含まれています。
PAGE_ENCLAVE_UNVALIDATED 指定したページ コンテンツは、Intel Software Guard Extensions プログラミング モデルの EEXTEND 命令を使用して測定から除外されます。

[in] lpPageInformation

エンクレーブに追加するページを記述する情報へのポインター。 lpPageInformation パラメーターは使用されません。

[in] dwInfoLength

lpPageInformation パラメーターが指す構造体の長さ (バイト単位)。 この値は 0 にする必要があります。

[out] lpNumberOfBytesWritten

LoadEnclaveData がエンクレーブにコピーしたバイト数を受け取る変数へのポインター。

[out, optional] lpEnclaveError

アーキテクチャ固有のエンクレーブ エラー コードを受け取る変数への省略可能なポインター。 lpEnclaveError パラメーターは使用されません。

戻り値

すべてのデータがエンクレーブに正常に読み込まれた場合、戻り値は 0 以外になります。 それ以外の場合、戻り値は 0 です。 詳細なエラー情報を得るには、GetLastError を呼び出します。

一般的なエラー コードの一覧については、「 システム エラー コード」を参照してください。 この関数には、次のエラー コードも適用されます。

リターン コード 説明
ERROR_BAD_LENGTH dwInfoLength パラメーターの値が、lpPageInformation パラメーターに指定された値に基づいて予期される値と一致しませんでした。

注釈

エンクレーブにデータを読み込んでからエンクレーブを初期化するには、 InitializeEnclave を呼び出します。

LoadEnclaveData は、ENCLAVE_TYPE_SGXとENCLAVE_TYPE_SGX2エンクレーブの種類を持つエンクレーブのみをサポートしています。

要件

   
サポートされている最小のクライアント Windows 10 [デスクトップ アプリ |UWP アプリ]
サポートされている最小のサーバー Windows Server 2016 [デスクトップ アプリ |UWP アプリ]
対象プラットフォーム Windows
ヘッダー enclaveapi.h (Winbase.h を含む)
Library onecore.lib
[DLL] Api-ms-win-core-enclave-l1-1-0.dll;kernel32.dll;KernelBase.dll

こちらもご覧ください

エンクレーブ関数

CreateEnclave

InitializeEnclave

メモリ保護定数