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