CRT вводит через границы процесса

Я делаю, перетаскивают/выпадают элемент управления ActiveX. На перетаскивании я обеспечиваю CComQIPtr, который имеет методы COM, реализованные для передачи информации цели отбрасывания. На отбрасывании процесс цели отбрасывания называет мои методы COM для получения информации.

Разве мне не разрешают использовать типы CRT или указатели на типы CRT около той интерфейсной границы? Я хотел бы в свой IDataObject иметь частный станд.:: список и некоторый станд.:: строки, и на внешней стороне интерфейса смочь назвать мои методы COM, которые могут получить доступ к тем членам парламента, не занимающим официального поста.

Я думаю, что это в порядке, потому что я на самом деле не передаю типы CRT через границу.

MSDN: потенциальные ошибки передающие объекты CRT через границы DLL

1
задан Dustin Getz 6 July 2010 в 15:22
поделиться

1 ответ

Вы можете использовать все, что захотите, в реализации вашего com-объекта, поскольку он всегда остается в процессе (или dll), который его создает.

Вам необходимо придерживаться типов COM в вашем интерфейсе COM, чтобы типы можно было упорядочить между процессом, в котором используется ваш объект, и процессом, в котором ваш объект был создан.

Вы правы. Эта статья не применима к данной ситуации, поскольку вы ничего не переходите через границу. Инфраструктура COM занимается маршалингом типов COM через границы за вас.

Просто убедитесь, что вы перехватываете все исключения в своих методах COM, вы не можете допустить их утечки из функции, поскольку инфраструктура COM не знает, что с ними делать.

Лично я предпочитаю иметь тонкий слой COM-кода, который занимается преобразованием между COM-типами и «нормальными» типами, а затем вызывает код, который выполняет реальную работу (см. здесь ). Этот уровень включает обработчик исключений, который перехватывает все и преобразует в соответствующие значения HRESULT.

2
ответ дан 2 September 2019 в 23:15
поделиться
Другие вопросы по тегам:

Похожие вопросы: