我已经使用SHGetDesktopFolder()获取PIDL,然后使用IShellFolder向下移动它。
我现在有一个特定的PIDL引用文件系统位置,我可以将BindToStorage和IStorage用于.OpenStream()和.Write()文件。
如果有趣的东西存在于文件系统中,这一切都很好,但更有趣的事情存在于“Shell命名空间扩展”中。
特别是,我有一台Pocket PC 2002设备(特别是Symbol PDT8146),它使用Windows Mobile Device Center连接到我的Windows 7设备。此应用程序创建一个shell命名空间文件夹,我可以在资源管理器中使用它来读取/写入文件。
我不能做的是使用命令行或win32 API将文件写入其中。
按照我上面概述的策略,我可以获得一个引用该设备的PIDL和IShellFolder实例,我可以列出它的文件。但是,当我尝试访问IStorage时,IShellFolder.BindToStorage()失败并显示“No such interface supported”。
我应该调查另一个shell接口来读取/写入这个顽固设备上的文件吗?
答案 0 :(得分:0)
IStream *stream;
if (FAILED(shellfolder->BindToObject (pidl, NULL, IID_IStream, &stream)))
return E_FAIL;
但我不确定这是否适用于编写文件。