LoadEnclaveData-Funktion (enclaveapi.h)
Lädt Daten in eine nicht initialisierte Enclave, die Sie durch Aufrufen von CreateEnclave erstellt haben.
Syntax
BOOL LoadEnclaveData(
[in] HANDLE hProcess,
[in] LPVOID lpAddress,
[in] LPCVOID lpBuffer,
[in] SIZE_T nSize,
[in] DWORD flProtect,
[in] LPCVOID lpPageInformation,
[in] DWORD dwInfoLength,
[out] PSIZE_T lpNumberOfBytesWritten,
[out, optional] LPDWORD lpEnclaveError
);
Parameter
[in] hProcess
Ein Handle für den Prozess, für den die Enklave erstellt wurde.
[in] lpAddress
Die Adresse in der Enklave, an die Sie die Daten laden möchten.
[in] lpBuffer
Ein Zeiger auf die Daten, die Sie in die Enclave laden möchten.
[in] nSize
Die Größe der Daten, die Sie in die Enclave laden möchten, in Bytes. Dieser Wert muss ein ganzes Vielfaches der Seitengröße sein.
[in] flProtect
Der Speicherschutz, der für die Seiten verwendet werden soll, die Sie der Enclave hinzufügen möchten. Eine Liste der Speicherschutzwerte finden Sie unter Speicherschutzkonstanten. Dieser Wert darf die folgenden Konstanten nicht enthalten:
- PAGE_GUARD
- PAGE_NOCACHE
- PAGE_WRITECOMBINE
- PAGE_NOACCESS
Dieser Wert kann die Enclave-spezifischen Konstanten enthalten, die in der folgenden Tabelle beschrieben werden:
Dauerhaft | BESCHREIBUNG |
---|---|
PAGE_ENCLAVE_THREAD_CONTROL | Die Seite enthält eine Threadsteuerungsstruktur (TCS). |
PAGE_ENCLAVE_UNVALIDATED | Die von Ihnen bereitgestellten Seiteninhalte werden mit der EEXTEND-Anweisung des Intel Software Guard Extensions-Programmiermodells von der Messung ausgeschlossen. |
[in] lpPageInformation
Ein Zeiger auf Informationen, die die Seiten beschreibt, die Sie der Enclave hinzufügen möchten. Der lpPageInformation-Parameter wird nicht verwendet.
[in] dwInfoLength
Die Länge der Struktur, auf die der lpPageInformation-Parameter verweist, in Bytes. Dieser Wert muss 0
sein.
[out] lpNumberOfBytesWritten
Ein Zeiger auf eine Variable, die die Anzahl von Bytes empfängt, die LoadEnclaveData in die Enclave kopiert hat.
[out, optional] lpEnclaveError
Ein optionaler Zeiger auf eine Variable, die einen architekturspezifischen Enclave-Fehlercode empfängt. Der parameter lpEnclaveError wird nicht verwendet.
Rückgabewert
Wenn alle Daten erfolgreich in die Enclave geladen werden, ist der Rückgabewert nonzero. Andernfalls ist der Rückgabewert 0. Um erweiterte Fehlerinformationen zu erhalten, rufen Sie GetLastError auf.
Eine Liste allgemeiner Fehlercodes finden Sie unter Systemfehlercodes. Die folgenden Fehlercodes gelten auch für diese Funktion.
Rückgabecode | Beschreibung |
---|---|
ERROR_BAD_LENGTH | Der Wert des dwInfoLength-Parameters stimmte nicht mit dem wert überein, der basierend auf dem für den parameter lpPageInformation angegebenen Wert erwartet wird. |
Hinweise
Um die Enclave zu initialisieren, nachdem Sie Daten in die Enclave geladen haben, rufen Sie InitializeEnclave auf.
LoadEnclaveData wird nur Enclaves unterstützt, die über den ENCLAVE_TYPE_SGX - und ENCLAVE_TYPE_SGX2 Enclave-Typen verfügen.
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 (einschließlich Winbase.h) |
Bibliothek | onecore.lib |
DLL | Api-ms-win-core-enclave-l1-1-0.dll; kernel32.dll; KernelBase.dll |