Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
Serega_
Зарегистрирован: 24.03.2002 Сообщения: 4
|
Добавлено: Вс Мар 24 2002 02:08 Заголовок сообщения: COM сервер, к оторому должны обращатся внешние программы |
|
|
Нужно написать СОМ сервер, который будет висеть загруженый, а к нему должны обращаться внешние программы, просить инфо какое-нибудь, формат возвращаемых данных может быть разным по структуре и по размеру, как это реализовать, подскажите плз, направьте на путь истинный. |
|
Вернуться к началу |
|
|
Mike
Зарегистрирован: 17.11.2001 Сообщения: 339 Откуда: ekb
|
Добавлено: Вс Мар 24 2002 09:53 Заголовок сообщения: Re: COM сервер, к оторому должны обращатся внешние программы |
|
|
Если ты пишешь на С++Бильдере или Дельфи, то там встроена возможность создания COM-серверов |
|
Вернуться к началу |
|
|
Serega_
Зарегистрирован: 24.03.2002 Сообщения: 4
|
Добавлено: Вс Мар 24 2002 13:16 Заголовок сообщения: Re: COM сервер, к оторому должны обращатся внешние программы |
|
|
Пишу на VC6, сервер создаётся нормально, но как передавать туда/обратно нестандартные типы данных (int, char etc.) а свои структуры, указатели на структуры и т.п. |
|
Вернуться к началу |
|
|
timur& Гость
|
Добавлено: Пн Мар 25 2002 05:35 Заголовок сообщения: Re: COM сервер, к оторому должны обращатся внешние программы |
|
|
Не простой вопрос..маршалинг. Передача в одну сторону - нет проблем! Но вот параметр in/out, это сложнее. Для правильно управления памятью нужно использовать IMalloc, либо CoTaskMemAlloc()/ CoTaskMemMemFree(); Если это один параметр, то *Val, пердашь и примешь, все в порядке. Но если это указатель на массив заранее неизвестной длинны? У меня(С++Builder5)меняется лишь первый элемент...Что тут не так? Не знаю...В книгах советуют использовать size_is(). Разве int, не стандартный тип для COM? Ну а char, замени на byte. В Builder можно создавать в библиотеке типов пользовательские record c собственными field, и затем передавать их, и указатели на них, как параметры. А вообще в сложных случаях я использую SAFEARRAY, все работает больше года без особых проблем. |
|
Вернуться к началу |
|
|
|