IAssociationArray (пост ненависти к Microsoft)
От: Aniskin  
Дата: 13.01.19 21:18
Оценка:
Есть у меня NSE, позволяющее работать в Проводнике с разными архивами как с папками. Проводник имеет функцию поиска, при включенной опции “Include compressed files (ZIP, CAB…)” Проводник будет искать и внутри архивов, ассоциированных с моим NSE. С этим проблем нет. Проблема с отображением результатов поиска. В нормальном состоянии результаты поиска отображаются в режиме Content view. Но для моих объектов Content view состоит только из имени объекта. Гифка для сравнения встроенного в Windows NSE, отвечающего за zip, и моего NSE.

На внутреннем уровне Проводник для моих объектов даже не пытается получить значения свойств PKEY_LayoutPattern_ContentViewModeForSearch и PKEY_PropList_ContentViewModeForSearch. Но я помню, что ранее (год или два назад) вызывал, поскольку у меня в коде есть возврат значений этих свойств. Я создал тему на social.msdn.microsoft.com, и разумеется на нее никто не отреагировал.

После безуспешных попыток понять причину я купил платную поддержку у MS. Шесть месяцев вялой переписки (ШЕСТЬ, Карл!), и наконец то кто то в MS вспомнил, что существуют дебаггеры, и можно пройтись по коду и найти проблемное место. Проблема оказалось в том, что их код ожидает, что моя реализация IQueryAssociations также будет реализовывать и некоторый недокументированный интерфейс, в противном случае до запроса свойств дело не доходит. Поддержка отписалась, что это by design, но направят в отдел разработки предложение исправить проблему в следующей версии Win10. Т.е. Win7/8/8.1 предлагают отбросить.

Просмотрев логи я увидел запросы на интерфейс с IID {61CAEE39-2E2F-4F70-886D-01B8935D3894}. Судя по HKEY_CLASSES_ROOT\Interface\{61CAEE39-2E2F-4F70-886D-01B8935D3894} этот интерфейс имеет имя IAssociationArray. MS раскрывать детали интерфейса отказывается. Поиск по гуглу приводит на описание этого интерфейса в старых версиях Windows. Но в них он имеет другие IID. Т.е. текущая версия интерфейса как минимум третья.

Ну и собственно вопрос. Есть ли способы получить описание этого интерфейса? Вряд ли все описания недокументированных интерфейсов на geoffchappell получены анализом машинного кода, наверняка использована автоматизация, может быть есть какие-нибудь способы с PBD файлами?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.