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_SGX 和 ENCLAVE_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 |