0

我使用 SHGetDesktopFolder() 来获取 PIDL,然后使用 IShellFolder 遍历它的内容。

我现在有一个引用文件系统位置的特定 PIDL,我可以使用 BindToStorage 和 IStorage 来 .OpenStream() 和 .Write() 文件。

如果有趣的东西存在于文件系统中,这一切都很好,但更有趣的东西存在于“Shell Namespace Extensions”中。

特别是,我有一个 Pocket PC 2002 设备(特别是 Symbol PDT8146),它使用 Windows Mobile Device Center 连接到我的 Windows 7 机器。这个应用程序创建了一个 shell 命名空间文件夹,我可以在资源管理器中使用它来读取/写入文件。

我不能做的是使用命令行或 win32 API 向其写入文件。

按照我上面概述的策略,我可以获得引用设备的 PIDL 和 IShellFolder 实例,并且可以列出它的文件。但是,当我尝试访问 IStorage 时,IShellFolder.BindToStorage() 失败并显示“不支持此类接口”。

我应该调查另一个 shell 接口来在这个顽固的设备上读/写文件吗?

4

1 回答 1

0

尝试IShellFolder.BindToObject

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

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

于 2013-06-14T12:31:17.400 回答