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 您使用 Intel Software Guard Extensions 程式設計模型的 EEXTEND 指令,排除您提供的頁面內容。

[in] lpPageInformation

描述您要新增至記憶體保護區之頁面的信息指標。 不會使用 lpPageInformation 參數。

[in] dwInfoLength

lpPageInformation 參數所指向之結構的長度,以位元組為單位。 這個值必須為 0

[out] lpNumberOfBytesWritten

變數的指標,接收 LoadEnclaveData 複製到記憶體保護區的位元組數目。

[out, optional] lpEnclaveError

可接收架構特定記憶體保護區錯誤碼之變數的選擇性指標。 不會使用 lpEnclaveError 參數。

傳回值

如果所有數據都成功載入記憶體保護區,則傳回值為非零。 否則,傳回值為零。 若要取得擴充的錯誤資訊,請呼叫 GetLastError

如需常見錯誤碼的清單,請參閱 系統錯誤碼。 下列錯誤碼也適用於此函式。

傳回碼 Description
ERROR_BAD_LENGTH dwInfoLength 參數的值不符合根據為 lpPageInformation 參數指定的值所預期的值。

備註

若要在將數據載入記憶體保護區之後初始化記憶體保護區,請呼叫 InitializeEnclave

LoadEnclaveData 僅支援具有 ENCLAVE_TYPE_SGXENCLAVE_TYPE_SGX2 記憶體保護區類型的記憶體保護區。

規格需求

   
最低支援的用戶端 Windows 10 [傳統型應用程式 |UWP 應用程式]
最低支援的伺服器 Windows Server 2016 [傳統型應用程式 |UWP 應用程式]
目標平台 Windows
標頭 enclaveapi.h (包含 Winbase.h)
程式庫 onecore.lib
Dll Api-ms-win-core-enclave-l1-1-0.dll;kernel32.dll;KernelBase.dll

另請參閱

記憶體保護區函式

CreateEnclave

InitializeEnclave

記憶體保護常數