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를 호출합니다.
LoadEnclaveData 는 ENCLAVE_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 |