InitializeEnclave 関数 (enclaveapi.h)
データを作成して読み込んだエンクレーブを初期化します。
構文
BOOL InitializeEnclave(
[in] HANDLE hProcess,
[in] LPVOID lpAddress,
[in] LPCVOID lpEnclaveInformation,
[in] DWORD dwInfoLength,
[in] LPDWORD lpEnclaveError
);
パラメーター
[in] hProcess
エンクレーブが作成されたプロセスのハンドル。
[in] lpAddress
エンクレーブ内の任意のアドレス。
[in] lpEnclaveInformation
エンクレーブの初期化に使用するアーキテクチャ固有の情報へのポインター。
ENCLAVE_TYPE_SGXとENCLAVE_TYPE_SGX2エンクレーブ型の場合は、ENCLAVE_INIT_INFO_SGX構造体へのポインターを指定します。
ENCLAVE_TYPE_VBS エンクレーブ型の場合は、ENCLAVE_INIT_INFO_VBS構造体へのポインターを指定します。
[in] dwInfoLength
lpEnclaveInformation パラメーターが指す構造体の長さ (バイト単位)。 ENCLAVE_TYPE_SGXとENCLAVE_TYPE_SGX2エンクレーブの種類の場合、この値は 4096 である必要があります。 ENCLAVE_TYPE_VBSエンクレーブの種類の場合、この値は sizeof(ENCLAVE_INIT_INFO_VBS)
である必要があります。これは 8 バイトです。
[in] lpEnclaveError
アーキテクチャ固有のエンクレーブ エラー コードを受け取る変数への省略可能なポインター。
ENCLAVE_TYPE_SGXおよびENCLAVE_TYPE_SGX2エンクレーブ型の場合、lpEnclaveError パラメーターには、関数が失敗し、GetLastError がERROR_ENCLAVE_FAILUREを返す場合に EINIT 命令が生成するエラーが含まれます。
ENCLAVE_TYPE_VBSエンクレーブ型の場合、lpEnclaveError パラメーターは使用されません。
戻り値
関数が成功すると、戻り値は 0 以外になります。 関数が失敗した場合は、0 を返します。 詳細なエラー情報を得るには、GetLastError を呼び出します。
一般的なエラー コードの一覧については、「 システム エラー コード」を参照してください。 この関数には、次のエラー コードも適用されます。
リターン コード | 説明 |
---|---|
ERROR_ENCLAVE_FAILURE | 基になるエンクレーブ アーキテクチャに固有のエラーが発生しました。 lpEnclaveError パラメーターの値には、アーキテクチャ固有のエラーが含まれています。 ENCLAVE_TYPE_SGXおよびENCLAVE_TYPE_SGX2エンクレーブ型の場合、ENCLAVE_INIT_INFO_SGX構造体が指定した EINIT 命令によってエラーが発生しました。 lpEnclaveError パラメーターの値には、命令によって生成されたエラーが含まれています。 |
ERROR_BAD_LENGTH | dwInfoLength パラメーターの値が、lpEnclaveInformation パラメーターに指定された値に基づいて予期される値と一致しませんでした。 |
ERROR_RETRY | プロセッサは、タイムリーにエンクレーブを初期化できませんでした。 エンクレーブをもう一度初期化してみてください。 |
注釈
エンクレーブを作成するには、 CreateEnclave 関数を使用します。 初期化する前にエンクレーブにデータを読み込むには、 LoadEnclaveData 関数を使用します。
Windows 10バージョン 1709 以降とWindows 11: エンクレーブの使用が完了したら、DeleteEnclave を呼び出します。 VirtualFree または VirtualFreeEx 関数を呼び出して VBS エンクレーブを削除することはできません。 引き続き VirtualFree または VirtualFreeEx を呼び出して、SGX エンクレーブ を削除できます。
Windows 10、バージョン 1507、Windows 10、バージョン 1511、Windows 10、バージョン 1607、Windows 10、バージョン 1703: 使用が完了したときにエンクレーブを削除するには、VirtualFree または VirtualFreeEx 関数を呼び出し、次の値を指定します。
- lpAddress パラメーターのエンクレーブのベース アドレス。
- dwSize パラメーターの場合は 0。
- dwFreeType パラメーターのMEM_RELEASE。
要件
サポートされている最小のクライアント | Windows 10 [デスクトップ アプリ |UWP アプリ] |
サポートされている最小のサーバー | Windows Server 2016 [デスクトップ アプリ |UWP アプリ] |
対象プラットフォーム | Windows |
ヘッダー | enclaveapi.h (Winbase.h を含む) |
Library | Kernel32.lib |
[DLL] | Api-ms-win-core-enclave-l1-1-0.dll;Kernel32.dll;KernelBase.dll |