다음을 통해 공유


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 특정 상수가 포함될 수 있습니다.

상수 Description
PAGE_ENCLAVE_THREAD_CONTROL 페이지에는 TCS(스레드 제어 구조)가 포함되어 있습니다.
PAGE_ENCLAVE_UNVALIDATED 제공하는 페이지 콘텐츠는 Intel Software Guard 확장 프로그래밍 모델의 EEXTEND 명령으로 측정에서 제외됩니다.

[in] lpPageInformation

enclave에 추가하려는 페이지를 설명하는 정보에 대한 포인터입니다. lpPageInformation 매개 변수는 사용되지 않습니다.

[in] dwInfoLength

lpPageInformation 매개 변수가 가리키는 구조체의 길이(바이트)입니다. 이 값은 0여야 합니다.

[out] lpNumberOfBytesWritten

LoadEnclaveData가 enclave에 복사한 바이트 수를 수신하는 변수에 대한 포인터입니다.

[out, optional] lpEnclaveError

아키텍처별 enclave 오류 코드를 수신하는 변수에 대한 선택적 포인터입니다. lpEnclaveError 매개 변수는 사용되지 않습니다.

반환 값

모든 데이터가 enclave에 성공적으로 로드되면 반환 값은 0이 아닌 값입니다. 그렇지 않으면 반환 값은 0입니다. 확장 오류 정보를 가져오려면 GetLastError를 호출합니다.

일반적인 오류 코드 목록은 시스템 오류 코드를 참조하세요. 이 함수에도 다음 오류 코드가 적용됩니다.

반환 코드 설명
ERROR_BAD_LENGTH dwInfoLength 매개 변수의 값이 lpPageInformation 매개 변수에 지정된 값에 따라 예상되는 값과 일치하지 않습니다.

설명

Enclave에 데이터를 로드한 후 enclave를 초기화하려면 InitializeEnclave를 호출합니다.

LoadEnclaveDataENCLAVE_TYPE_SGX 및 ENCLAVE_TYPE_SGX2 enclave 형식이 있는 enclave 만 지원됩니다.

요구 사항

   
지원되는 최소 클라이언트 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

추가 정보

Enclave 함수

CreateEnclave

InitializeEnclave

메모리 보호 상수