Archive

Posts Tagged ‘COM’

Регистрация COM объектов. Часть II. 64-х разрядная специфика.

April 18th, 2007
Comments Off

Итак, продолжаем начатое в первой части. 64-х разрядные версии Windows не разрешают смешивать 32-х и 64-х битный код в пределах одного процесса. В результате этого ограничения некоторые ветви реестра были также разделены на 32-х и 64-х разрядные. В частности, были разделены ключи, отвечающие за регистрацию COM компонент. Этот механизм называется перенаправлением реестра (registry redirection) и реализуется средствами Wow64. Механизм более или менее прозрачен для приложений в том смысле, что и 32-x и 64-х битные приложения используют одинаковые пути вида «HKEY_CLASSES_ROOT\Classes\{…}», но работают, в конечном итоге, с разными ключами.

Read more…

, , ,

Регистрация COM объектов. Часть I.

April 13th, 2007

Изначально, данный пост должен был называться «Регистрация COM объектов на 64-х разрядных версиях Windows» и речь должна было пойти про особенности 64-х разрядных версий Windows с точки зрения регистрации COM компонент. Однако пост получился слишком большим и его пришлось разбить на две части. Про особенности 64-х разрядных систем я расскажу во второй части.

Для начала немного теории. Взаимодействие клиента (приложения вызвавшего CoCreateInstance) и сервера (COM объекта) в общем случае можно изобразить с помощью вот такой схемы:

COM маршалинг.

Read more…

, , ,

.NET обертка для IShellLink (инсталляция).

October 25th, 2006
Comments Off

Как и обещал, выкладываю ссылку на инсталляцию:

  • ShellLib (x86) – версия для 32-битного Windows XP/2003;
  • ShellLib (x64) – версия для 64-битного Windows XP/2003.

Инсталляция не содержит практически никакого пользовательского интерфейса – зачем он там нужен? Деинсталляция – через Add or Remove Programs. Инсталляция создавалась, как не трудно догадаться, с помощью WiX. :-) Исходный код инсталляционного скрипта можно скачать вместе с обновленными исходниками.

, ,

.NET обертка для IShellLink.

October 22nd, 2006

Наконец-то дописал .NET обертку для IShellLink (см. серию постов начиная с Shortcuts, shell and COM apartments.). Теперь можно создавать и редактировать ярлыки прямо из PowerShell. :-)

Вот ссылка на исходный код проекта. Немного позже, если дойдут руки, выложу ссылку на готовую инсталляцию.

Read more…

, ,

COM marshalling: создание proxy/stub на коленке.

October 11th, 2006
Comments Off

Хочу поделиться рецептом победы над коварным IShellLinkDataList (см. предыдущие посты COM marshalling. и Shortcuts, shell and COM apartments.)

Итак, исходная задача: вызвать метод локального интерфейса (интерфейса, помеченного атрибутом [local]) удалённо.

Read more…

,

COM marshalling, документация и все, все, все…

October 9th, 2006
Comments Off

Все-таки, наверное, Европейский Суд не зря судит Microsoft за недостаточно хорошую документацию. Пытаясь разобраться как, все таки, написать proxy для интерфейса IShellLinkDataList (см. предыдущие посты: COM Marshalling. и Shortcuts, shell and COM apartments.), перечитал уйму документации, пока не нашел толкового описания того, что я хочу сделать на сайте Dr. Dobb’s. Если попытаться описать весь процесс “метаний”, то выглядело это так:

Read more…

, ,

COM marshalling.

October 7th, 2006
Comments Off

Продолжение истории про Shortcuts, shell and COM apartments.

Разбираясь с написанием proxy для интерфейса IShellLinkDataList, нашел несколько дельных статей в MSDN. Например, Standard Marshaling Architecture толково описывает как собственно происходит marshalling во время вызова и какие объекты задействованы при этом. В двух словах всё происходит так:

Read more…

,