Fungsi CreateEnclave (enclaveapi.h)
Membuat enklave baru yang tidak diinisialisasi. Enklave adalah wilayah kode dan data yang terisolasi dalam ruang alamat untuk aplikasi. Hanya kode yang berjalan dalam enklave yang dapat mengakses data dalam enklave yang sama.
Sintaks
LPVOID CreateEnclave(
[in] HANDLE hProcess,
[in, optional] LPVOID lpAddress,
[in] SIZE_T dwSize,
[in] SIZE_T dwInitialCommitment,
[in] DWORD flEnclaveType,
[in] LPCVOID lpEnclaveInformation,
[in] DWORD dwInfoLength,
[out, optional] LPDWORD lpEnclaveError
);
Parameter
[in] hProcess
Handel ke proses yang ingin Anda buat enklavenya.
[in, optional] lpAddress
Alamat dasar enklave yang disukai. Tentukan NULL agar sistem operasi menetapkan alamat dasar.
[in] dwSize
Ukuran enklave yang ingin Anda buat, termasuk ukuran kode yang akan Anda muat ke enklave, dalam byte.
Enklave VBS harus berukuran kelipatan 2 MB.
Enklave SGX harus berukuran 2 dan harus memiliki basis yang selaras dengan kekuatan 2 yang sama dengan ukuran, dengan penyelarasan minimum 2 MB. Sebagai contoh, jika enklave adalah 128 MB, maka basisnya harus selaras dengan batas 128 MB.
[in] dwInitialCommitment
Jumlah memori yang akan diterapkan untuk enklave, dalam byte.
Jika jumlah memori enklave yang tersedia tidak cukup untuk menerapkan jumlah byte ini, pembuatan enklave gagal. Memori apa pun yang tetap tidak digunakan saat Anda menginisialisasi enklave dengan memanggil InitializeEnclave dikembalikan ke daftar halaman gratis.
Nilai parameter dwInitialCommittment tidak boleh melebihi nilai parameter dwSize .
Parameter ini tidak digunakan untuk enklave keamanan berbasis virtualisasi (VBS).
[in] flEnclaveType
Jenis arsitektur enklave yang ingin Anda buat. Untuk memverifikasi bahwa jenis enklave didukung, panggil IsEnclaveTypeSupported.
Nilai | Makna |
---|---|
ENCLAVE_TYPE_SGX0x00000001 |
Enklave untuk ekstensi arsitektur Intel Software Guard Extensions (SGX). |
ENCLAVE_TYPE_SGX20x00000002 |
Mendukung enklave SGX2 dan SGX1. Platform dan OS mendukung instruksi SGX2 dengan EDMM pada platform ini (selain konstruksi SGX2 lainnya). |
ENCLAVE_TYPE_VBS0x00000010 |
Enklave VBS. |
[in] lpEnclaveInformation
Penunjuk ke informasi khusus arsitektur yang akan digunakan untuk membuat enklave.
Untuk jenis enklave ENCLAVE_TYPE_SGX dan ENCLAVE_TYPE_SGX2 , Anda harus menentukan penunjuk ke struktur ENCLAVE_CREATE_INFO_SGX .
Untuk jenis enklave ENCLAVE_TYPE_VBS , Anda harus menentukan penunjuk ke struktur ENCLAVE_CREATE_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_CREATE_INFO_VBS)
, yaitu 36 byte.
[out, optional] lpEnclaveError
Penunjuk opsional ke variabel yang menerima kode kesalahan enklave yang khusus untuk arsitektur. Untuk jenis enklave ENCLAVE_TYPE_SGX, ENCLAVE_TYPE_SGX2 , dan ENCLAVE_TYPE_VBS , parameter lpEnclaveError tidak digunakan.
Nilai kembali
Jika fungsi berhasil, nilai pengembalian adalah alamat dasar enklave yang dibuat.
Jika fungsi gagal, nilai yang dikembalikan adalah NULL. 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_NOT_SUPPORTED | Jenis enklave yang tidak didukung ditentukan. |
ERROR_BAD_LENGTH | Nilai parameter dwInfoLength tidak cocok dengan nilai yang diharapkan berdasarkan nilai yang ditentukan untuk parameter lpEnclaveInformation . |
Keterangan
Untuk memuat data ke enklave setelah Anda membuatnya, panggil LoadEnclaveData. Untuk menginisialisasi enklave setelah Anda memuat data, panggil InitializeEnclave.
Windows 10, versi 1709: 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 . Nilai MEM_DECOMMIT tidak didukung untuk enklave.
Untuk informasi tentang ekstensi arsitektur Intel Software Guard Extensions (SGX), lihat Intel Software Guard Extensions.
Persyaratan
Persyaratan | Nilai |
---|---|
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