Функция 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

См. также раздел

Функции анклава

CreateEnclave

InitializeEnclave

Константы защиты памяти