2016-04-13 1 views
0

CreateFile2 api возвращает ERROR_NOT_SUPPORTED_IN_APPCONTAINER, когда файл отсутствует/доступен в пути. Мой код нижеОшибка Windows-10 CreateFile2 (ERROR_NOT_SUPPORTED_IN_APPCONTAINER)

CREATEFILE2_EXTENDED_PARAMETERS ms_param = {0}; 
    ms_param.dwSize = sizeof(CREATEFILE2_EXTENDED_PARAMETERS); 
    ms_param.dwFileAttributes = FILE_ATTRIBUTE_READONLY; 
    ms_param.dwFileFlags = FILE_FLAG_NO_BUFFERING; 
    ms_param.dwSecurityQosFlags = SECURITY_DELEGATION; 
    ms_param.lpSecurityAttributes = NULL; 
    ms_param.hTemplateFile = NULL; 

    g_hfile = CreateFile2(filename, GENERIC_READ, FILE_SHARE_READ|FILE_SHARE_WRITE, OPEN_EXISTING, &ms_param); 
    if (g_hfile == INVALID_HANDLE_VALUE) 
    { 
      return GetLastError(); 
    } 

Я уже смотрел на эту тему: CreateFile2 error in WinRT project (ERROR_NOT_SUPPORTED_IN_APPCONTAINER), сообщая подобный вопрос. Решение, предложенное там, не работает для меня.

На этой странице MSDN: CreateFile2Если указанный файл или устройство не существует, функция терпит неудачу и код последней ошибки устанавливается в ERROR_FILE_NOT_FOUND (2) .Но я получаю ERROR_NOT_SUPPORTED_IN_APPCONTAINER ошибку

+0

Вы указали 'OPEN_EXISTING' как расположение создания. Почему вас удивляет, что вызов завершается неудачно, если файл не существует? – IInspectable

+0

Я не понимаю, в чем проблема. – user34660

+0

Привет @IInspectable & user34660, Спасибо за ответ. На этой странице msdn: https://msdn.microsoft.com/en-us/library/windows/desktop/aa363858(v=vs.85).aspx, если указано OPEN_EXISTING и если файл не найден, ошибка это ERROR_FILE_NOT_FOUND. Мое приложение обрабатывает ошибку ERROR_FILE_NOT_FOUND для этого api, но приложение не ожидает увидеть ошибку ERROR_NOT_SUPPORTED_IN_APPCONTAINER. Пожалуйста, дайте мне знать, если я что-то упустил. –

ответ

1

@ Хасс Пассант, комментарий помог мне выяснить ответ. Поскольку я не могу поддержать комментарий, я добавляю его в качестве ответа здесь:

CreateFile2 не является способом обхода ограничений песочницы. Вы получаете доступ только к каталогам, для которых appxmanifest запрашивает разрешения.

После проверки его комментария я отлаживал свое приложение более глубоко & смог увидеть, что при определенных сценариях приложение пыталось читать/записывать файлы, которые были за пределами доступных каталогов.

Смежные вопросы