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 |