Функция LoadEnclaveData (enclaveapi.h)
Загружает данные в неинициализированный анклав, созданный путем вызова CreateEnclave.
Синтаксис
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
);
Параметры
[in] hProcess
Дескриптор процесса, для которого был создан анклав.
[in] lpAddress
Адрес в анклаве, по которому требуется загрузить данные.
[in] lpBuffer
Указатель на данные, которые вы хотите загрузить в анклав.
[in] nSize
Размер данных, которые требуется загрузить в анклав, в байтах. Это значение должно быть целым числом, кратным размеру страницы.
[in] flProtect
Защита памяти, используемая для страниц, которые вы хотите добавить в анклав. Список значений защиты памяти см. в разделе Константы защиты памяти. Это значение не должно включать следующие константы:
- PAGE_GUARD
- PAGE_NOCACHE
- PAGE_WRITECOMBINE
- PAGE_NOACCESS
Это значение может включать константы анклава, которые описаны в следующей таблице:
Константа | Описание |
---|---|
PAGE_ENCLAVE_THREAD_CONTROL | Страница содержит структуру управления потоками (TCS). |
PAGE_ENCLAVE_UNVALIDATED | Указанное содержимое страницы исключается из измерения с помощью инструкции EEXTEND модели программирования расширений Intel Software Guard. |
[in] lpPageInformation
Указатель на сведения, описывающие страницы, которые нужно добавить в анклав. Параметр lpPageInformation не используется.
[in] dwInfoLength
Длина структуры, на которую указывает параметр lpPageInformation , в байтах. Это значение должно быть равно 0
.
[out] lpNumberOfBytesWritten
Указатель на переменную, получающую количество байтов, скопированных LoadEnclaveData в анклав.
[out, optional] lpEnclaveError
Необязательный указатель на переменную, получающую код ошибки анклава, зависящий от архитектуры. Параметр lpEnclaveError не используется.
Возвращаемое значение
Если все данные успешно загружены в анклав, возвращаемое значение будет ненулевым. В противном случае возвращаемое значение равно нулю. Дополнительные сведения об ошибке можно получить, вызвав GetLastError.
Список распространенных кодов ошибок см. в разделе Системные коды ошибок. Для этой функции также применяются следующие коды ошибок.
Код возврата | Описание |
---|---|
ERROR_BAD_LENGTH | Значение параметра dwInfoLength не совпадало с ожидаемым значением на основе значения, указанного для параметра lpPageInformation . |
Комментарии
Чтобы инициализировать анклав после загрузки данных в анклав, вызовите Метод InitializeEnclave.
LoadEnclaveData — это поддерживаемые анклавы, имеющие типы анклавов ENCLAVE_TYPE_SGX и ENCLAVE_TYPE_SGX2 .
Требования
Минимальная версия клиента | Windows 10 [классические приложения | Приложения UWP] |
Минимальная версия сервера | Windows Server 2016 [классические приложения | Приложения UWP] |
Целевая платформа | Windows |
Header | enclaveapi.h (включая Winbase.h) |
Библиотека | onecore.lib |
DLL | Api-ms-win-core-enclave-l1-1-0.dll; kernel32.dll; KernelBase.dll |