Fungsi InitializeEnclave (enclaveapi.h)

Menginisialisasi enklave yang Anda buat dan muat dengan data.

Sintaks

BOOL InitializeEnclave(
  [in] HANDLE  hProcess,
  [in] LPVOID  lpAddress,
  [in] LPCVOID lpEnclaveInformation,
  [in] DWORD   dwInfoLength,
  [in] LPDWORD lpEnclaveError
);

Parameter

[in] hProcess

Handel ke proses tempat enklave dibuat.

[in] lpAddress

Alamat apa pun di dalam enklave.

[in] lpEnclaveInformation

Penunjuk ke informasi khusus arsitektur yang akan digunakan untuk menginisialisasi enklave.

Untuk jenis enklave ENCLAVE_TYPE_SGX dan ENCLAVE_TYPE_SGX2 , tentukan penunjuk ke struktur ENCLAVE_INIT_INFO_SGX .

Untuk jenis enklave ENCLAVE_TYPE_VBS , tentukan penunjuk ke struktur ENCLAVE_INIT_INFO_VBS .

[in] dwInfoLength

Panjang struktur yang ditunjukkan parameter lpEnclaveInformation , dalam byte. Untuk jenis enklave ENCLAVE_TYPE_SGX dan ENCLAVE_TYPE_SGX2 , nilai ini harus 4096. Untuk jenis enklave ENCLAVE_TYPE_VBS , nilai ini harus sizeof(ENCLAVE_INIT_INFO_VBS), yaitu 8 byte.

[in] lpEnclaveError

Penunjuk opsional ke variabel yang menerima kode kesalahan enklave yang khusus untuk arsitektur.

Untuk jenis enklave ENCLAVE_TYPE_SGX dan ENCLAVE_TYPE_SGX2 , parameter lpEnclaveError berisi kesalahan yang dihasilkan instruksi EINIT jika fungsi gagal dan GetLastError mengembalikan ERROR_ENCLAVE_FAILURE.

Untuk jenis enklave ENCLAVE_TYPE_VBS , parameter lpEnclaveError tidak digunakan.

Mengembalikan nilai

Jika fungsi berhasil, nilai yang dikembalikan bukan nol. Jika fungsi gagal, nilai yang dikembalikan adalah nol. Untuk mendapatkan informasi kesalahan yang diperluas, hubungi GetLastError.

Untuk daftar kode kesalahan umum, lihat Kode Kesalahan Sistem. Kode kesalahan berikut juga berlaku untuk fungsi ini.

Menampilkan kode Deskripsi
ERROR_ENCLAVE_FAILURE Kegagalan khusus untuk arsitektur enklave yang mendasar terjadi. Nilai untuk parameter lpEnclaveError berisi kesalahan khusus arsitektur.

Untuk jenis enklave ENCLAVE_TYPE_SGX dan ENCLAVE_TYPE_SGX2 , instruksi EINIT bahwa struktur ENCLAVE_INIT_INFO_SGX yang ditentukan menghasilkan kesalahan. Nilai parameter lpEnclaveError berisi kesalahan yang dihasilkan instruksi.
ERROR_BAD_LENGTH Nilai parameter dwInfoLength tidak cocok dengan nilai yang diharapkan berdasarkan nilai yang ditentukan untuk parameter lpEnclaveInformation .
ERROR_RETRY Prosesor tidak dapat menginisialisasi enklave secara tepat waktu. Cobalah untuk menginisialisasi enklave lagi.

Keterangan

Untuk membuat enklave, gunakan fungsi CreateEnclave . Untuk memuat data ke enklave sebelum Anda menginisialisasinya, gunakan fungsi LoadEnclaveData .

Windows 10, versi 1709 dan yang lebih baru dan Windows 11: Untuk menghapus enklave saat Anda selesai menggunakannya, panggil DeleteEnclave. Anda tidak dapat menghapus enklave VBS dengan memanggil fungsi VirtualFree atau VirtualFreeEx . Anda masih dapat menghapus enklave SGX dengan memanggil VirtualFree atau VirtualFreeEx.

Windows 10, versi 1507, Windows 10, versi 1511, Windows 10, versi 1607 dan Windows 10, versi 1703: Untuk menghapus enklave saat Anda selesai menggunakannya, panggil fungsi VirtualFree atau VirtualFreeEx dan tentukan nilai berikut:

  • Alamat dasar enklave untuk parameter lpAddress .
  • 0 untuk parameter dwSize .
  • MEM_RELEASE untuk parameter dwFreeType .

Persyaratan

   
Klien minimum yang didukung Windows 10 [aplikasi desktop | Aplikasi UWP]
Server minimum yang didukung Windows Server 2016 [aplikasi desktop | Aplikasi UWP]
Target Platform Windows
Header enclaveapi.h (termasuk Winbase.h)
Pustaka Kernel32.lib
DLL Api-ms-win-core-enclave-l1-1-0.dll; Kernel32.dll; KernelBase.dll

Lihat juga

Fungsi Enklave

CreateEnclave

ENCLAVE_INIT_INFO_SGX

LoadEnclaveData

VirtualFree

VirtualFreeEx