InitializeEnclave 함수(enclaveapi.h)
데이터로 만들고 로드한 Enclave를 초기화합니다.
구문
BOOL InitializeEnclave(
[in] HANDLE hProcess,
[in] LPVOID lpAddress,
[in] LPCVOID lpEnclaveInformation,
[in] DWORD dwInfoLength,
[in] LPDWORD lpEnclaveError
);
매개 변수
[in] hProcess
Enclave를 만든 프로세스에 대한 핸들입니다.
[in] lpAddress
enclave 내의 모든 주소입니다.
[in] lpEnclaveInformation
Enclave를 초기화하는 데 사용할 아키텍처 관련 정보에 대한 포인터입니다.
ENCLAVE_TYPE_SGX 및 ENCLAVE_TYPE_SGX2 enclave 형식의 경우 ENCLAVE_INIT_INFO_SGX 구조체에 대한 포인터를 지정합니다.
ENCLAVE_TYPE_VBS enclave 형식의 경우 ENCLAVE_INIT_INFO_VBS 구조체에 대한 포인터를 지정합니다.
[in] dwInfoLength
lpEnclaveInformation 매개 변수가 가리키는 구조체의 길이(바이트)입니다. ENCLAVE_TYPE_SGX 및 ENCLAVE_TYPE_SGX2 enclave 형식의 경우 이 값은 4096이어야 합니다. ENCLAVE_TYPE_VBS enclave 형식의 경우 이 값은 8바이트인 이어야 합니다sizeof(ENCLAVE_INIT_INFO_VBS)
.
[in] lpEnclaveError
아키텍처별 Enclave 오류 코드를 수신하는 변수에 대한 선택적 포인터입니다.
ENCLAVE_TYPE_SGX 및 ENCLAVE_TYPE_SGX2 enclave 형식의 경우 lpEnclaveError 매개 변수에는 함수가 실패하고 GetLastError가 ERROR_ENCLAVE_FAILURE 반환하는 경우 생성된 EINIT 명령이 발생하는 오류가 포함됩니다.
ENCLAVE_TYPE_VBS enclave 형식의 경우 lpEnclaveError 매개 변수가 사용되지 않습니다.
반환 값
함수가 성공하면 반환 값이 0이 아닙니다. 함수가 실패하면 반환 값은 0입니다. 확장 오류 정보를 가져오려면 GetLastError를 호출합니다.
일반적인 오류 코드 목록은 시스템 오류 코드를 참조하세요. 이 함수에도 다음 오류 코드가 적용됩니다.
반환 코드 | 설명 |
---|---|
ERROR_ENCLAVE_FAILURE | 기본 Enclave 아키텍처와 관련된 오류가 발생했습니다. lpEnclaveError 매개 변수의 값에는 아키텍처별 오류가 포함됩니다. ENCLAVE_TYPE_SGX 및 ENCLAVE_TYPE_SGX2 enclave 형식의 경우 ENCLAVE_INIT_INFO_SGX 구조가 지정한 EINIT 명령으로 오류가 발생했습니다. lpEnclaveError 매개 변수의 값에는 명령이 생성한 오류가 포함됩니다. |
ERROR_BAD_LENGTH | dwInfoLength 매개 변수의 값이 lpEnclaveInformation 매개 변수에 지정된 값에 따라 예상되는 값과 일치하지 않습니다. |
ERROR_RETRY | 프로세서는 적시에 enclave를 초기화할 수 없었습니다. enclave를 다시 초기화합니다. |
설명
Enclave를 만들려면 CreateEnclave 함수를 사용합니다. 데이터를 초기화하기 전에 Enclave에 로드하려면 LoadEnclaveData 함수를 사용합니다.
Windows 10 버전 1709 이상 및 Windows 11: 사용을 완료할 때 enclave를 삭제하려면 DeleteEnclave를 호출합니다. VirtualFree 또는 VirtualFreeEx 함수를 호출하여 VBS enclave 를 삭제할 수 없습니다. VirtualFree 또는 VirtualFreeEx를 호출하여 SGX enclave를 삭제할 수 있습니다.
Windows 10 버전 1507, Windows 10, 버전 1511, Windows 10, 버전 1607 및 Windows 10 버전 1703: 사용을 완료할 때 enclave를 삭제하려면 VirtualFree 또는 VirtualFreeEx 함수를 호출하고 다음 값을 지정합니다.
- lpAddress 매개 변수에 대한 enclave의 기본 주소입니다.
- dwSize 매개 변수의 경우 0입니다.
- dwFreeType 매개 변수에 대한 MEM_RELEASE.
요구 사항
지원되는 최소 클라이언트 | Windows 10 [데스크톱 앱 | UWP 앱] |
지원되는 최소 서버 | Windows Server 2016 [데스크톱 앱 | UWP 앱] |
대상 플랫폼 | Windows |
헤더 | enclaveapi.h(Winbase.h 포함) |
라이브러리 | Kernel32.lib |
DLL | Api-ms-win-core-enclave-l1-1-0.dll; Kernel32.dll; KernelBase.dll |