Гость
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / COM Interop. Чего я не понимаю. / 7 сообщений из 7, страница 1 из 1
01.06.2018, 18:44
    #39654183
mikron
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
COM Interop. Чего я не понимаю.
Продолжая разаработку редактора ,
решил сделать более полную поддержку буфера обмена - без ограничений на размер текста.
И столкнулся с некоторыми непонятными моментами.
Во первых буфер обмена реализован на COM, и передача данных возможна через глобальную памят (не интересует)
или через COM объект с интерфейсом IStream.
И в нём есть метод чтения
Интересен вопрос с первым параметром. Указатель в память.
Чего я не понимаю: в память какого процесса? Логично предположить что клиента.
Но как COM сервер отображает эти памят в своё адресное пространство?
И откудого он вобще знает границы региона отображения?

Допустим эта магия скрывается за чётким указанием в этом документе

Но посмотрим на реализацию System.Windows.Forms.DataStreamFromComStream
И в частности на метод Read.

Вопрос остаётся открытым: откудого COM / .Net Marshaler знает границы региона отображения?
...
Рейтинг: 0 / 0
02.06.2018, 09:01
    #39654294
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
COM Interop. Чего я не понимаю.
mikronНо как COM сервер отображает эти памят в своё адресное пространство?
Interop COM в адресном пространстве клиента. Память одна и та же.
...
Рейтинг: 0 / 0
02.06.2018, 10:19
    #39654308
mikron
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
COM Interop. Чего я не понимаю.
Petro123mikronНо как COM сервер отображает эти памят в своё адресное пространство?
Interop COM в адресном пространстве клиента. Память одна и та же.
А если COM сервер исполняется в другом процессе или даже на другой машине?
...
Рейтинг: 0 / 0
02.06.2018, 10:46
    #39654313
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
COM Interop. Чего я не понимаю.
mikronPetro123пропущено...

Interop COM в адресном пространстве клиента. Память одна и та же.
А если COM сервер исполняется в другом процессе или даже на другой машине?
В простом случае это аналог DLL-ки.
В боллее сложном это и зовется по другому сервер автоматизации, OLE Server. Например ворд, эксель.
Тогда маршаллинг, сериализация и все дела.
...
Рейтинг: 0 / 0
02.06.2018, 11:08
    #39654318
mikron
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
COM Interop. Чего я не понимаю.
Petro123mikronА если COM сервер исполняется в другом процессе или даже на другой машине?
В простом случае это аналог DLL-ки.
Что за профанация. COM - аналог DLL? Может вы неудачно высказались.
Надеюсь разницу между interop и COM interop понимаете?

Petro123В боллее сложном это и зовется по другому сервер автоматизации, OLE Server. Например ворд, эксель.
Тогда маршаллинг, сериализация и все дела.
В терминологии Майкрософта это называется COM server

Вопрос остаётся открытым: откудого COM / .Net Marshaler знает границы региона отображения?
...
Рейтинг: 0 / 0
02.06.2018, 12:56
    #39654333
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
COM Interop. Чего я не понимаю.
mikron,
Я вам сказал, доступным языком про это:
https://msdn.microsoft.com/en-us/library/windows/desktop/ms693344(v=vs.85).aspx
Вы же с вопросом, а не я.
Ищите другие аргументы. Кто против.
...
Рейтинг: 0 / 0
02.06.2018, 13:16
    #39654334
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
COM Interop. Чего я не понимаю.
mikronЧто за профанация. COM - аналог DLL
Если в реестре
InprocServer32 C:\Windows\System32\msi.dll
То этот Com ведет себя как dll.
В том же процессе и адреса в памяти одни.
Я про это говорил.
...
Рейтинг: 0 / 0
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / COM Interop. Чего я не понимаю. / 7 сообщений из 7, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]