Fonction LoadEnclaveData (enclaveapi.h)

Charge des données dans une enclave non initialisée que vous avez créée en appelant CreateEnclave.

Syntaxe

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
);

Paramètres

[in] hProcess

Handle du processus pour lequel l’enclave a été créée.

[in] lpAddress

Adresse dans l’enclave où vous souhaitez charger les données.

[in] lpBuffer

Pointeur vers les données que vous souhaitez charger dans l’enclave.

[in] nSize

Taille des données que vous souhaitez charger dans l’enclave, en octets. Cette valeur doit être un multiple de nombre entier de la taille de la page.

[in] flProtect

Protection de la mémoire à utiliser pour les pages que vous souhaitez ajouter à l’enclave. Pour obtenir la liste des valeurs de protection de la mémoire, consultez Constantes de protection de la mémoire. Cette valeur ne doit pas inclure les constantes suivantes :

  • PAGE_GUARD
  • PAGE_NOCACHE
  • PAGE_WRITECOMBINE
  • PAGE_NOACCESS

Cette valeur peut inclure les constantes spécifiques à l’enclave décrites dans le tableau suivant :

Constant Description
PAGE_ENCLAVE_THREAD_CONTROL La page contient une structure de contrôle de thread (TCS).
PAGE_ENCLAVE_UNVALIDATED Le contenu de la page que vous fournissez est exclu de la mesure avec l’instruction EEXTEND du modèle de programmation Intel Software Guard Extensions.

[in] lpPageInformation

Pointeur vers des informations qui décrit les pages que vous souhaitez ajouter à l’enclave. Le paramètre lpPageInformation n’est pas utilisé.

[in] dwInfoLength

Longueur de la structure vers laquelle pointe le paramètre lpPageInformation , en octets. Cette valeur doit être 0.

[out] lpNumberOfBytesWritten

Pointeur vers une variable qui reçoit le nombre d’octets que LoadEnclaveData a copiés dans l’enclave.

[out, optional] lpEnclaveError

Pointeur facultatif vers une variable qui reçoit un code d’erreur d’enclave spécifique à l’architecture. Le paramètre lpEnclaveError n’est pas utilisé.

Valeur retournée

Si toutes les données sont correctement chargées dans l’enclave, la valeur de retour est différente de zéro. Sinon, la valeur de retour est zéro. Pour obtenir des informations détaillées sur l’erreur, appelez GetLastError.

Pour obtenir la liste des codes d’erreur courants, consultez Codes d’erreur système. Les codes d’erreur suivants s’appliquent également à cette fonction.

Code de retour Description
ERROR_BAD_LENGTH La valeur du paramètre dwInfoLength ne correspondait pas à la valeur attendue en fonction de la valeur spécifiée pour le paramètre lpPageInformation .

Remarques

Pour initialiser l’enclave après avoir chargé des données dans l’enclave, appelez InitializeEnclave.

LoadEnclaveData est uniquement pris en charge pour les enclaves qui ont les types d’enclaves ENCLAVE_TYPE_SGX et ENCLAVE_TYPE_SGX2 .

Configuration requise

   
Client minimal pris en charge Windows 10 [applications de bureau | Applications UWP]
Serveur minimal pris en charge Windows Server 2016 [applications de bureau | Applications UWP]
Plateforme cible Windows
En-tête enclaveapi.h (inclure Winbase.h)
Bibliothèque onecore.lib
DLL Api-ms-win-core-enclave-l1-1-0.dll ; kernel32.dll ; KernelBase.dll

Voir aussi

Fonctions d’enclave

CreateEnclave

InitializeEnclave

Constantes de protection de la mémoire