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

Vedi anche

Funzioni enclave

CreateEnclave

ENCLAVE_INIT_INFO_SGX

LoadEnclaveData

Virtualfree

VirtualFreeEx