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

Weitere Informationen

Enclave-Funktionen

CreateEnclave

InitializeEnclave

Speicherschutzkonstanten