【发布时间】:2016-04-15 07:02:59
【问题描述】:
当文件在路径中不存在/不可用时,CreateFile2 api 返回 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 错误
【问题讨论】:
-
您将
OPEN_EXISTING指定为创建处置。如果文件不存在,为什么调用会失败? -
我不明白问题出在哪里。
-
嗨@IInspectable & user34660,感谢您的回复。从这个 msdn 页面:msdn.microsoft.com/en-us/library/windows/desktop/…,如果指定了 OPEN_EXISTING 并且如果找不到文件,则错误是 ERROR_FILE_NOT_FOUND。我的应用程序为此 api 处理 ERROR_FILE_NOT_FOUND 错误,但应用程序不希望看到 ERROR_NOT_SUPPORTED_IN_APPCONTAINER 错误。如果我遗漏了什么,请告诉我。
-
您确定应该收到
ERROR_FILE_NOT_FOUND错误吗?也许您的 filename 指向不支持的路径。或者您的某些标志(或组合)无效。另请注意,您在问题中链接到CreateFile,但您正在调用CreateFile2。 -
CreateFile2 不是绕过沙盒限制的方法。您只能访问 appxmanifest 请求权限的目录。
标签: windows file-io win-universal-app windows-10-universal