使用shell API在shell命名空间扩展中读/写文件

时间:2013-06-13 19:21:54

标签: windows shell com namespaces istorage

我已经使用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接口来读取/写入这个顽固设备上的文件吗?

1 个答案:

答案 0 :(得分:0)

尝试IShellFolder.BindToObject

IStream *stream;
if (FAILED(shellfolder->BindToObject (pidl, NULL, IID_IStream, &stream)))
  return E_FAIL;

但我不确定这是否适用于编写文件。