Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Windows runtime HRESULT E_尝试创建';的名称在WinRT中包含冒号_Windows Runtime_Winrt Xaml - Fatal编程技术网

Windows runtime HRESULT E_尝试创建';的名称在WinRT中包含冒号

Windows runtime HRESULT E_尝试创建';的名称在WinRT中包含冒号,windows-runtime,winrt-xaml,Windows Runtime,Winrt Xaml,使用StorageFolder对象并尝试创建一个名称包含冒号的文件夹(不是在开头或结尾),会导致HRESULT 80004005出现COM错误(HRESULT E_失败) 例如: 等待ApplicationData.Current.TemporaryFolder.CreateFolderAsync(“abc:xyz”, CreationCollisionOption.OpenIfExists) 如果冒号在开头或结尾,我会得到一个HRESULT 8007007b,并显示消息“文件名、目录名或卷标语

使用StorageFolder对象并尝试创建一个名称包含冒号的文件夹(不是在开头或结尾),会导致HRESULT 80004005出现COM错误(HRESULT E_失败)

例如: 等待ApplicationData.Current.TemporaryFolder.CreateFolderAsync(“abc:xyz”, CreationCollisionOption.OpenIfExists)

如果冒号在开头或结尾,我会得到一个HRESULT 8007007b,并显示消息“文件名、目录名或卷标语法不正确”。那很好

我检查了其他无效字符,但只有冒号导致E_失败

如果用户输入文件夹名称,则可能会出现问题。解决方法当然是简单地检查文件名中的冒号


有人知道E_失败错误的可能原因吗?我假设COM认为foldername以URI开头,但当然不能确定它是什么类型的URI。

好吧,COM臭名昭著的错误报告又回来了。多年来,我们被.NET优秀且信息丰富的例外情况所宠坏,但这张地毯是温特拉的。COM是底层互操作机制,HRESULT是报告错误的方式

E_FAIL是规范错误代码,您可以获得的唯一描述性文本是“未指定错误”。准确地说,处理该代码的Microsoft程序员不能或不想产生更具描述性的错误。另一个大灾难是意外,它被翻译成“灾难性的失败”。术语“灾难性的”实际上指的是错误消息的值,如果您得到它的话

从某种程度上推测,“abc:xyz”路径字符串实际上是有效的。它引用名为“xyz”的备用数据流,存储在文件“abc”中。因此,检查路径字符串一开始不会引起争议。但是,您正在使用该名称创建文件夹,而不是文件。文件夹不能有备用数据流。显然,这是发现得很晚,太晚了,仍然无法产生更准确的错误代码。它应该产生一个Windows错误,并通过0x8007000或使用0x8007000将它们适当地包装在一个HRESULT中,但这不是出于不必要的原因


无法就此发送反馈,Windows组没有与DevDiv的connect.microsoft.com相当的功能。幸好你知道错误的原因。

好吧,COM臭名昭著的错误报告又回来了。多年来,我们被.NET优秀且信息丰富的例外情况所宠坏,但这张地毯是温特拉的。COM是底层互操作机制,HRESULT是报告错误的方式

E_FAIL是规范错误代码,您可以获得的唯一描述性文本是“未指定错误”。准确地说,处理该代码的Microsoft程序员不能或不想产生更具描述性的错误。另一个大灾难是意外,它被翻译成“灾难性的失败”。术语“灾难性的”实际上指的是错误消息的值,如果您得到它的话

从某种程度上推测,“abc:xyz”路径字符串实际上是有效的。它引用名为“xyz”的备用数据流,存储在文件“abc”中。因此,检查路径字符串一开始不会引起争议。但是,您正在使用该名称创建文件夹,而不是文件。文件夹不能有备用数据流。显然,这是发现得很晚,太晚了,仍然无法产生更准确的错误代码。它应该产生一个Windows错误,并通过0x8007000或使用0x8007000将它们适当地包装在一个HRESULT中,但这不是出于不必要的原因


无法就此发送反馈,Windows组没有与DevDiv的connect.microsoft.com相当的功能。幸好您知道错误的原因。

非常感谢您提供了这一信息丰富的答案。同时也感谢你没有隐藏你对COM和HRESULT的看法,顺便说一下,我完全同意你的看法。首先,windows版本在connect上,所以你可以在那里提供反馈。您还可以使用Windows论坛提供反馈。如果你有一个调试器,调试器应该提供更多关于实际错误的反馈。@Larry:是的,我会的。我只是想在stackoverflow上找到一个可能的原因,它运行得非常好:-)。@Larry:如果我能找到Windows运行时的连接页面,那就好了:-(试试:。通常你会使用Windows 8连接页面(在Win8发布时,该页面显然已关闭)。非常感谢您提供了这一信息丰富的答案。同时也感谢您没有隐藏您对COM和HRESULT的看法,顺便说一句,我完全同意您的看法。首先,windows版本位于connect上,因此您可以在那里提供反馈。您也可以使用windows论坛提供反馈。如果您附带了调试器,调试器应该提供有关实际错误的更多反馈。@Larry:是的,我会这样做。我只是想在stackoverflow上找到一个可能的原因,它工作得非常好:-)。@Larry:如果我能找到Windows运行时的连接页:-(请尝试:),通常您会使用Windows 8连接页(在Win8发布时,该页显然已关闭)。