Как сохранить IPropertyBag на диске - PullRequest
1 голос
/ 18 июня 2020

Я успешно получил IPropertyBag для состояния просмотра папки. Я получил его, используя SHGetViewStatePropertyBag, и подтвердил, что пакет действителен, проверив некоторые значения свойств.

Теперь я хотел бы сохранить пакет свойств на диск в виде капли, если возможно. Я запускал QueryInterface на сумке, и мне не удалось получить никаких полезных интерфейсов. К сожалению, кажется, что пакет свойств не поддерживает интерфейс IPersistStream. И я также не смог успешно запросить интерфейс IPersistPropertyBag.

Есть ли уловка, чтобы получить какой-то постоянный интерфейс для пакета свойств? Или свойства, по сути, должны быть сохранены индивидуально, специальным образом c? Заранее благодарим за любые рекомендации.

1 Ответ

0 голосов
/ 18 июня 2020

Вызов Write на IPropertyBag должен автоматически записать изменение на диск.

В общем, интерфейс IPersistXXX реализуется объектами, которые могут сохранять себя в XXX (где XXX - это либо Stream, либо PropertyBag ), в то время как ожидается, что IPropertyBag и IStream будут подкреплены чем-то - диском, блоком памяти или сокетом.

Или вы хотите взять все свойства из пакета и как-нибудь сохранить их в другом месте ? В этом случае вам нужно запросить IPropertyBag2 и перечислить их.

...