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 |