Funzione InitializeEnclave (enclaveapi.h)
Inizializza un enclave creato e caricato con i dati.
Sintassi
BOOL InitializeEnclave(
[in] HANDLE hProcess,
[in] LPVOID lpAddress,
[in] LPCVOID lpEnclaveInformation,
[in] DWORD dwInfoLength,
[in] LPDWORD lpEnclaveError
);
Parametri
[in] hProcess
Handle per il processo per cui è stato creato l'enclave.
[in] lpAddress
Qualsiasi indirizzo all'interno dell'enclave.
[in] lpEnclaveInformation
Puntatore alle informazioni specifiche dell'architettura da usare per inizializzare l'enclave.
Per i tipi di enclave ENCLAVE_TYPE_SGX e ENCLAVE_TYPE_SGX2 , specificare un puntatore a una struttura ENCLAVE_INIT_INFO_SGX .
Per il tipo di enclave ENCLAVE_TYPE_VBS , specificare un puntatore a una struttura ENCLAVE_INIT_INFO_VBS .
[in] dwInfoLength
Lunghezza della struttura a cui punta il parametro lpEnclaveInformation in byte. Per i tipi di enclave ENCLAVE_TYPE_SGX e ENCLAVE_TYPE_SGX2 , questo valore deve essere 4096. Per il tipo di enclave ENCLAVE_TYPE_VBS , questo valore deve essere sizeof(ENCLAVE_INIT_INFO_VBS)
, ovvero 8 byte.
[in] lpEnclaveError
Puntatore facoltativo a una variabile che riceve un codice di errore dell'enclave specifico dell'architettura.
Per i tipi di enclave ENCLAVE_TYPE_SGX e ENCLAVE_TYPE_SGX2 , il parametro lpEnclaveError contiene l'errore generato dall'istruzione EINIT se la funzione ha esito negativo e GetLastError restituisce ERROR_ENCLAVE_FAILURE.
Per il tipo di enclave ENCLAVE_TYPE_VBS , il parametro lpEnclaveError non viene usato.
Valore restituito
Se la funzione ha esito positivo, il valore restituito è diverso da zero. Se la funzione ha esito negativo, il valore restituito è zero. Per informazioni dettagliate sull'errore, chiamare GetLastError.
Per un elenco di codici di errore comuni, vedere Codici di errore di sistema. I codici di errore seguenti si applicano anche per questa funzione.
Codice restituito | Descrizione |
---|---|
ERROR_ENCLAVE_FAILURE | Si è verificato un errore specifico dell'architettura dell'enclave sottostante. Il valore per il parametro lpEnclaveError contiene l'errore specifico dell'architettura. Per i tipi di enclave ENCLAVE_TYPE_SGX e ENCLAVE_TYPE_SGX2, l'istruzione EINIT che la struttura ENCLAVE_INIT_INFO_SGX specificata ha generato un errore. Il valore del parametro lpEnclaveError contiene l'errore generato dall'istruzione. |
ERROR_BAD_LENGTH | Il valore del parametro dwInfoLength non corrisponde al valore previsto in base al valore specificato per il parametro lpEnclaveInformation . |
ERROR_RETRY | Il processore non è stato in grado di inizializzare l'enclave in modo tempestivo. Provare a inizializzare nuovamente l'enclave. |
Commenti
Per creare un enclave, usare la funzione CreateEnclave . Per caricare i dati nell'enclave prima di inizializzarlo, usare la funzione LoadEnclaveData .
Windows 10, versione 1709 e successiva e Windows 11: per eliminare l'enclave al termine dell'uso, chiamare DeleteEnclave. Non è possibile eliminare un enclave VBS chiamando la funzione VirtualFree o VirtualFreeEx. È comunque possibile eliminare un enclave SGX chiamando VirtualFree o VirtualFreeEx.
Windows 10, versione 1507, Windows 10, versione 1511, Windows 10, versione 1607 e Windows 10, versione 1703: Per eliminare l'enclave al termine dell'uso, chiamare la funzione VirtualFree o VirtualFreeEx e specificare i valori seguenti:
- Indirizzo di base dell'enclave per il parametro lpAddress .
- 0 per il parametro dwSize .
- MEM_RELEASE per il parametro dwFreeType .
Requisiti
Client minimo supportato | Windows 10 [app desktop | App UWP] |
Server minimo supportato | Windows Server 2016 [app desktop | App UWP] |
Piattaforma di destinazione | Windows |
Intestazione | enclaveapi.h (includere Winbase.h) |
Libreria | Kernel32.lib |
DLL | Api-ms-win-core-enclave-l1-1-0.dll; Kernel32.dll; KernelBase.dll |