例如,我想创建一个新的存根文件“test.mp3”,并为其添加一个窗口属性(例如 System.Author)。
该解决方案必须可用于多个文件扩展名,如文本、图片、视频等......
如果我只是创建一个文件并使用 IShellItem2::GetPropertyStore 我会因无效参数而导致 HRESULT 失败。
在真实的音乐文件上使用 IShellItem2::GetPropertyStore 我可以很好地读写它的属性。
请先测试您的建议。
例如,我想创建一个新的存根文件“test.mp3”,并为其添加一个窗口属性(例如 System.Author)。
该解决方案必须可用于多个文件扩展名,如文本、图片、视频等......
如果我只是创建一个文件并使用 IShellItem2::GetPropertyStore 我会因无效参数而导致 HRESULT 失败。
在真实的音乐文件上使用 IShellItem2::GetPropertyStore 我可以很好地读写它的属性。
请先测试您的建议。
属性存储通常在文件本身中访问和存储数据。对于您的 mp3 文件,它将尝试读取和写入 ID3 标签。此外,Property Stores 不存储在数据库中,不能随意添加到不支持它的文件中。
您很可能需要实现自己的属性处理程序来完成您想要完成的事情。对于已经有处理程序的类型,您必须将系统处理程序替换为您自己的处理程序。
您的 mp3 测试失败的最可能原因是您有一个没有数据且没有有效 ID3 标签的空文件。