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 файлами?
Re: IAssociationArray (пост ненависти к Microsoft)
От: CEMb  
Дата: 14.01.19 02:41
Оценка:
Здравствуйте, Aniskin, Вы писали:

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


А в исходниках нету?
Re: IAssociationArray (пост ненависти к Microsoft)
От: hi_octane Беларусь  
Дата: 14.01.19 02:55
Оценка:
A>Ну и собственно вопрос. Есть ли способы получить описание этого интерфейса? Вряд ли все описания недокументированных интерфейсов на geoffchappell получены анализом машинного кода, наверняка использована автоматизация, может быть есть какие-нибудь способы с PBD файлами?

MS часто делает COM по фэншую и если повезёт — ты где-то найдёшь файл TLB в котором нужный интерфейс будет описан. Дальше применишь что-то вроде TLB Viewer и наступит щасте. Но это в идеале.
Re[2]: IAssociationArray (пост ненависти к Microsoft)
От: Aniskin  
Дата: 14.01.19 08:26
Оценка:
Здравствуйте, CEMb, Вы писали:

CEM>А в исходниках нету?


Если речь об утекших исходниках 2000 и NT, то нет, в них нет моего интерфейса. Ну и было странно увидеть в NT интерфейс, введенный в 10.
Re[2]: IAssociationArray (пост ненависти к Microsoft)
От: Aniskin  
Дата: 14.01.19 08:32
Оценка:
Здравствуйте, hi_octane, Вы писали:

_>ты где-то найдёшь файл TLB


А где можно теоретически найти этот TLB?
Re[3]: IAssociationArray (пост ненависти к Microsoft)
От: hi_octane Беларусь  
Дата: 14.01.19 09:06
Оценка:
A>А где можно теоретически найти этот TLB?
Несколько идёт с Platform SDK, куча просто лежит в системе.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.