InitializeEnclave-Funktion (enclaveapi.h)

Initialisiert eine Enclave, die Sie erstellt und mit Daten geladen haben.

Syntax

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

Parameter

[in] hProcess

Ein Handle für den Prozess, für den die Enclave erstellt wurde.

[in] lpAddress

Jede Adresse innerhalb der Enclave.

[in] lpEnclaveInformation

Ein Zeiger auf architekturspezifische Informationen, die zum Initialisieren der Enclave verwendet werden sollen.

Geben Sie für die Typen ENCLAVE_TYPE_SGX und ENCLAVE_TYPE_SGX2 Enclave einen Zeiger auf eine ENCLAVE_INIT_INFO_SGX-Struktur an.

Geben Sie für den ENCLAVE_TYPE_VBS Enclavetyp einen Zeiger auf eine ENCLAVE_INIT_INFO_VBS-Struktur an.

[in] dwInfoLength

Die Länge der Struktur, auf die der lpEnclaveInformation-Parameter in Bytes zeigt. Für die Enclavetypen ENCLAVE_TYPE_SGX und ENCLAVE_TYPE_SGX2 muss dieser Wert 4096 sein. Für den ENCLAVE_TYPE_VBS Enclave-Typ muss dieser Wert sein sizeof(ENCLAVE_INIT_INFO_VBS), d. h. 8 Bytes.

[in] lpEnclaveError

Ein optionaler Zeiger auf eine Variable, die einen architekturspezifischen Enclave-Fehlercode empfängt.

Für die Typen ENCLAVE_TYPE_SGX und ENCLAVE_TYPE_SGX2 Enclave enthält der lpEnclaveError-Parameter den Fehler, dass die EINIT-Anweisung generiert wird, wenn die Funktion fehlschlägt und GetLastErrorERROR_ENCLAVE_FAILURE zurückgibt.

Für den ENCLAVE_TYPE_VBS Enclave-Typ wird der lpEnclaveError-Parameter nicht verwendet.

Rückgabewert

Wenn die Funktion erfolgreich ist, ist der Rückgabewert ungleich Null. Wenn die Funktion fehlerhaft ist, ist der Rückgabewert null. Um erweiterte Fehlerinformationen zu erhalten, rufen Sie GetLastError auf.

Eine Liste der allgemeinen Fehlercodes finden Sie unter Systemfehlercodes. Die folgenden Fehlercodes gelten auch für diese Funktion.

Rückgabecode Beschreibung
ERROR_ENCLAVE_FAILURE Es ist ein Für die zugrunde liegende Enclave-Architektur spezifischer Fehler aufgetreten. Der Wert für den lpEnclaveError-Parameter enthält den architekturspezifischen Fehler.

Für die ENCLAVE_TYPE_SGX - und ENCLAVE_TYPE_SGX2 Enclave-Typen hat die EINIT-Anweisung, die von der angegebenen ENCLAVE_INIT_INFO_SGX-Struktur angegeben wurde, einen Fehler generiert. Der Wert des lpEnclaveError-Parameters enthält den Fehler, den die Anweisung generiert hat.
ERROR_BAD_LENGTH Der Wert des dwInfoLength-Parameters stimmte nicht mit dem erwarteten Wert überein, der auf dem für den lpEnclaveInformation-Parameter angegebenen Wert basiert.
ERROR_RETRY Der Prozessor konnte die Enclave nicht rechtzeitig initialisieren. Versuchen Sie erneut, die Enclave zu initialisieren.

Hinweise

Verwenden Sie zum Erstellen einer Enclave die CreateEnclave-Funktion . Um Daten vor der Initialisierung in die Enclave zu laden, verwenden Sie die LoadEnclaveData-Funktion .

Windows 10 Version 1709 und höher und Windows 11: Rufen Sie DeleteEnclave auf, um die Enclave nach Ihrer Verwendung zu löschen. Sie können eine VBS-Enclave nicht löschen, indem Sie die Funktion VirtualFree oder VirtualFreeEx aufrufen. Sie können eine SGX-Enclave weiterhin löschen, indem Sie VirtualFree oder VirtualFreeEx aufrufen.

Windows 10, Version 1507, Windows 10, Version 1511, Windows 10, Version 1607 und Windows 10, Version 1703: Rufen Sie die Funktion VirtualFree oder VirtualFreeEx auf, und geben Sie die folgenden Werte an:

  • Die Basisadresse der Enclave für den lpAddress-Parameter .
  • 0 für den dwSize-Parameter .
  • MEM_RELEASE für den dwFreeType-Parameter .

Anforderungen

   
Unterstützte Mindestversion (Client) Windows 10 [Desktop-Apps | UWP-Apps]
Unterstützte Mindestversion (Server) Windows Server 2016 [Desktop-Apps | UWP-Apps]
Zielplattform Windows
Kopfzeile enclaveapi.h (winbase.h einschließen)
Bibliothek Kernel32.lib
DLL Api-ms-win-core-enclave-l1-1-0.dll; Kernel32.dll; KernelBase.dll

Weitere Informationen

Enclave-Funktionen

CreateEnclave

ENCLAVE_INIT_INFO_SGX

LoadEnclaveData

VirtualFree

VirtualFreeEx