LoadEnclaveData 函数 (enclaveapi.h)

将数据加载到通过调用 CreateEnclave 创建的未初始化 enclave 中。

语法

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

为其创建 enclave 的进程句柄。

[in] lpAddress

要在其中加载数据的 enclave 中的地址。

[in] lpBuffer

指向要加载到 enclave 中的数据的指针。

[in] nSize

要加载到 enclave 中的数据的大小(以字节为单位)。 此值必须是页面大小的整数倍数。

[in] flProtect

要用于要添加到 enclave 的页面的内存保护。 有关内存保护值的列表,请参阅 内存保护常量。 此值不得包含以下常量:

  • PAGE_GUARD
  • PAGE_NOCACHE
  • PAGE_WRITECOMBINE
  • PAGE_NOACCESS

此值可以包括下表所述的 enclave 特定常量:

一直 说明
PAGE_ENCLAVE_THREAD_CONTROL 该页包含 TCS) (线程控件结构。
PAGE_ENCLAVE_UNVALIDATED 使用 Intel Software Guard Extensions 编程模型的 EEXTEND 指令,将您提供的页面内容排除在度量范围之外。

[in] lpPageInformation

指向描述要添加到 enclave 的页面的信息的指针。 不使用 lpPageInformation 参数。

[in] dwInfoLength

lpPageInformation 参数指向的 结构的长度(以字节为单位)。 此值必须为 0

[out] lpNumberOfBytesWritten

指向变量的指针,该变量接收 LoadEnclaveData 复制到 enclave 中的字节数。

[out, optional] lpEnclaveError

指向接收特定于体系结构的 enclave 错误代码的变量的可选指针。 不使用 lpEnclaveError 参数。

返回值

如果所有数据都成功加载到 enclave 中,则返回值为非零值。 否则返回值为零。 要获得更多的错误信息,请调用 GetLastError。

有关常见错误代码的列表,请参阅 系统错误代码。 以下错误代码也适用于此函数。

返回代码 说明
ERROR_BAD_LENGTH dwInfoLength 参数的值与基于为 lpPageInformation 参数指定的值的预期值不匹配。

注解

若要在将数据加载到 enclave 后初始化 enclave,请调用 InitializeEnclave

LoadEnclaveData 仅支持具有 ENCLAVE_TYPE_SGXENCLAVE_TYPE_SGX2 enclave 类型的 enclave。

要求

   
最低受支持的客户端 Windows 10 [桌面应用 |UWP 应用]
最低受支持的服务器 Windows Server 2016 [桌面应用 |UWP 应用]
目标平台 Windows
标头 enclaveapi.h (包括 Winbase.h)
Library onecore.lib
DLL Api-ms-win-core-enclave-l1-1-0.dll;kernel32.dll;KernelBase.dll

另请参阅

Enclave 函数

CreateEnclave

InitializeEnclave

内存保护常量