我有一个C#应用程序,它创建一个批处理文件,然后运行它。此批处理文件调用C ++应用程序,该应用程序应删除某个文件。
当我运行C#app时:
这是C ++代码和documentation:
// Attempt to delete the object from the device
hr = content->Delete(PORTABLE_DEVICE_DELETE_NO_RECURSION, // Deleting with no recursion
objectsToDelete.Get(), // Object(s) to delete
nullptr);
当我从命令行运行创建的批处理文件时,它可以工作,所以我不知道问题出在哪里。
答案 0 :(得分:0)
这不是一个完整的答案,但是需要的故障排除步骤不适合评论,因此作为一个答案(我会在更多信息来自OP时进行修改)&lt; < / EM>:
根据您发布的documentation链接,如果第3个参数收到指针而不是nullptr
,那么它会在S_FALSE
返回时包含特定的错误信息。此信息与确定您遇到的失败原因有关。
以下是来自该电话的S_FALSE
含义的文件引用:
无法删除至少一个对象。 ppResults参数(如果已指定)包含每个对象的错误代码。
请修改您的代码如下:
// Attempt to delete the object from the device
IPortableDevicePropVariantCollection *pResults;
hr = content->Delete(PORTABLE_DEVICE_DELETE_NO_RECURSION, // Deleting with no recursion
objectsToDelete.Get(), // Object(s) to delete
&pResults);
//TODO: Dump contents of pResults to log/cout/etc., in form objectsToDelete[i]=pResults[i]...
OP:请修改您的代码以捕获ppResults
并使用该结构中的信息修改您的问题。