Ошибка загрузки анклава: не удалось открыть файл с помощью CreateFile ()

Я пытаюсь написать простой проект SGX для начала. Итак, у меня есть основная подпрограмма хост-приложения, из которой я в значительной степени скопировал Блог Ларса Рихтера:

#define ENCLAVE_FILE _T("Enclave.signed.dll")
#include <tchar.h>
#include <cstdio>
#include "sgx_urts.h"#include "Enclave_u.h"
int main()
{
sgx_enclave_id_t   eid;
sgx_status_t       ret = SGX_SUCCESS;
sgx_launch_token_t token = { 0 };
int updated = 0;

ret = sgx_create_enclave(ENCLAVE_FILE, SGX_DEBUG_FLAG, &token, &updated, &eid, NULL);

if (ret != SGX_SUCCESS) {
printf("\nApp: error %#x, failed to create enclave.\n", ret);
}scanf("\n");

return 0;
}

Он хорошо компилируется (я использую компилятор Intel C ++ 17.0 с Visual Studio 2015), но не загружает анклав. Я получаю следующее сообщение об ошибке:

[sgx_create_enclavew ..\urts\win\urts.cpp:195] Couldn't open file with CreateFile()

App: error 0x200f, failed to create enclave.

0

Решение

Идти к app_test_save настройка проекта. Под отладка, менять рабочий каталог в $ (SolutionDir) Debug. Этот ответ предполагает, что оба проекта app_test_save а также enclave_test_save принадлежат к тому же решению.

1

Другие решения

Как указал Нейл, sgx_create_enclave не смог найти dll, когда программа запускалась из отладчика Visual Studio. Он работал нормально, когда я непосредственно запускал исполняемый файл в папке «Debug».

Таким образом, простой прием, чтобы заставить его работать в обоих настройках, состоит в следующем:

#define ENCLAVE_FILE _T("../Debug/Enclave.signed.dll")
0

Согласно этому : https://software.intel.com/en-us/forums/intel-software-guard-extensions-intel-sgx/topic/623738

Если вы используете локальный отладчик SGX, убедитесь, что изменили «текущий рабочий каталог», указывая на $ (OutDir) вместо $ (ProjectDir).

Свойства конфигурации -> Отладка -> Рабочий каталог -> $ (OutDir).

0
По вопросам рекламы [email protected]