![]() |
|
|
![]()
|
|
| yaprogrammer |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 11 Регистрация: 6.8.2009 Репутация: нет Всего: нет |
При первом запуске клиента все проходит нормально. При Debugе клиента все проходит нормально. При втором и последующих запусках возращает нулевой указатель. Сервер всегда пишет в лог правильные данные.
Код клиента
Код компонента
|
||||
|
|||||
| jonie |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5613 Регистрация: 21.8.2005 Где: Владимир Репутация: 5 Всего: 118 |
yaprogrammer, ну и ? Отладчик запретили что ли? Отлаживайте компонент - кто вам мешает ? Наставьте assert-ов наконец...
-------------------- Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет... |
|||
|
||||
| Andrey44 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1501 Регистрация: 4.12.2006 Где: На работе Репутация: 2 Всего: 26 |
значит надо смотреть *pphServer = GetServerItems(dwCount); //здесь выделяется память и записываются данные Почему GetServerItems возвращает пустой указатель. -------------------- ????? ??, ??????? ?????. |
|||
|
||||
| yaprogrammer |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 11 Регистрация: 6.8.2009 Репутация: нет Всего: нет |
А подскажите пожалуйста как отлаживать компонент в msvc 6.0?
|
|||
|
||||
| jonie |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5613 Регистрация: 21.8.2005 Где: Владимир Репутация: 5 Всего: 118 |
yaprogrammer, абсолютно также как и в VS2010. Стартуете отладчик, только запускаемым exe-шником (студия спросит вас) указываете нечто, что ипользует ваш компонент (да хоть IE например). И всё.
-------------------- Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет... |
|||
|
||||
| yaprogrammer |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 11 Регистрация: 6.8.2009 Репутация: нет Всего: нет |
jonie Я так понимаю, что это работает для компонента в dll. А у меня компонент реализован в exe.
Andrey44 Вставил проверку на пустой указатель - память выделяется нормально. Уже начал грешить на код IDL:
И является ли правильным выделение памяти с помощью CoTaskMemAlloc когда компонент и клиент в разных процессах? |
|||
|
||||
| Andrey44 |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1501 Регистрация: 4.12.2006 Где: На работе Репутация: 2 Всего: 26 |
-------------------- ????? ??, ??????? ?????. |
||||
|
|||||
| yaprogrammer |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 11 Регистрация: 6.8.2009 Репутация: нет Всего: нет |
Нулевой указатель pphServer и ppErrors.
|
|||
|
||||
| Andrey44 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1501 Регистрация: 4.12.2006 Где: На работе Репутация: 2 Всего: 26 |
Что-то я вас не пойму. Покажите как проверяете -------------------- ????? ??, ??????? ?????. |
|||
|
||||
| yaprogrammer |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 11 Регистрация: 6.8.2009 Репутация: нет Всего: нет |
После выделения памяти на сервере проверяю так
|
|||
|
||||
| Andrey44 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1501 Регистрация: 4.12.2006 Где: На работе Репутация: 2 Всего: 26 |
Так где-же возвращается нулевой указатель?
Сделайте так
|| *ppErrors == NULL я думаю проверять не надо, так как обычно ppErrors == NULL при успешном выполнении функции. По этому вы постоянно и возвращаете из функции E_OUTOFMEMORY -------------------- ????? ??, ??????? ?????. |
|||
|
||||
| xvr |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 8 Всего: 223 |
Судя по IDL у вас интерфейс IX dispinterface и dual, но типы параметров pphServer и ppErrors несовместимы с dispinterface
Какой код возврата (hr в клиенте в строке 6)? |
|||
|
||||
| yaprogrammer |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 11 Регистрация: 6.8.2009 Репутация: нет Всего: нет |
Cоздал новый компонент, указал другие uuid, сделал проверку на пустой указатель как говорил Andrey44. Теперь возвращает не пустые указатели. но значения не те, точнее только первое значение массива то:
На сервере записываю следующие значения: 10, 11, 12, 13, 14 А на клиенте считываю: 10, 0, 1296387404, 8, 1244932 При этом код возврата функции hr = 0.
xvr, а какими они должны быть? |
|||
|
||||
| xvr |
|
||||||||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 8 Всего: 223 |
Похоже size_is считается в байтах, а не в элементах (что логично). Попробуйте так
А вам точно нужен dispinterface? Может и обычного IUnknown хватит? |
||||||||
|
|||||||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: COM/DCOM/ActiveX/ATL/CORBA | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |