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
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk