다음을 통해 공유


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_SGXENCLAVE_TYPE_SGX2 enclave 형식의 경우 ENCLAVE_INIT_INFO_SGX 구조체에 대한 포인터를 지정합니다.

ENCLAVE_TYPE_VBS enclave 형식의 경우 ENCLAVE_INIT_INFO_VBS 구조체에 대한 포인터를 지정합니다.

[in] dwInfoLength

lpEnclaveInformation 매개 변수가 가리키는 구조체의 길이(바이트)입니다. ENCLAVE_TYPE_SGXENCLAVE_TYPE_SGX2 enclave 형식의 경우 이 값은 4096이어야 합니다. ENCLAVE_TYPE_VBS enclave 형식의 경우 이 값은 8바이트인 이어야 합니다sizeof(ENCLAVE_INIT_INFO_VBS).

[in] lpEnclaveError

아키텍처별 Enclave 오류 코드를 수신하는 변수에 대한 선택적 포인터입니다.

ENCLAVE_TYPE_SGXENCLAVE_TYPE_SGX2 enclave 형식의 경우 lpEnclaveError 매개 변수에는 함수가 실패하고 GetLastErrorERROR_ENCLAVE_FAILURE 반환하는 경우 생성된 EINIT 명령이 발생하는 오류가 포함됩니다.

ENCLAVE_TYPE_VBS enclave 형식의 경우 lpEnclaveError 매개 변수가 사용되지 않습니다.

반환 값

함수가 성공하면 반환 값이 0이 아닙니다. 함수가 실패하면 반환 값은 0입니다. 확장 오류 정보를 가져오려면 GetLastError를 호출합니다.

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

반환 코드 설명
ERROR_ENCLAVE_FAILURE 기본 Enclave 아키텍처와 관련된 오류가 발생했습니다. lpEnclaveError 매개 변수의 값에는 아키텍처별 오류가 포함됩니다.

ENCLAVE_TYPE_SGXENCLAVE_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

추가 정보

Enclave 함수

CreateEnclave

ENCLAVE_INIT_INFO_SGX

LoadEnclaveData

VirtualFree

VirtualFreeEx