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 |