Помогите плз.
От: Ionich  
Дата: 13.07.04 08:54
Оценка:
Не могу понять в чем трабла.

Есть exe — сервер
в его интерфесе функция
[id(2), helpstring("method Init")] HRESULT Init([in] BSTR hostName, [out, retval] long* ErrCode);


сама ф-я такая:

TDMETHODIMP CModernize::Init(BSTR hostName, long *ErrCode)
{
 *ErrCode = 3; 
 return S_OK;
}


код на клиенте:
позднее связывание, обект получаю через CoCreateInstanceEx()
...
long ErrCode=10;
pModern->Init(BSTRHostName,&ErrCode);


После этого ErrCode имеет значение 0
Где грабли?
Re: Помогите плз.
От: Vi2 Удмуртия http://www.adem.ru
Дата: 13.07.04 09:16
Оценка:
Здравствуйте, Ionich, Вы писали:

I>Есть exe — сервер. В его интерфейсе функция

I>[id(2), helpstring("method Init")] HRESULT Init([in] BSTR hostName, [out, retval] long* ErrCode);

I>сама ф-я такая:
I>TDMETHODIMP CModernize::Init(BSTR hostName, long *ErrCode)
I>{
I> *ErrCode = 3; 
I> return S_OK;
I>}

I>код на клиенте: позднее связывание, объект получаю через CoCreateInstanceEx()
I>...
I>long ErrCode=10;
I>pModern->Init(BSTRHostName,&ErrCode);

I>После этого ErrCode имеет значение 0
I>Где грабли?

В позднем связывании. [out, retval] возвращается не в параметре pDispParams, а через pVarResult. Пройди через клиентский вызов pModern->Init в Отладчике или по исходникам. Может быть, правда, ошибка в серверной части, которая неправильно упаковывает результат.
Vita
Выше головы не прыгнешь, ниже земли не упадешь, дальше границы не убежишь! © КВН НГУ
Re[2]: Помогите плз.
От: Ionich  
Дата: 13.07.04 09:21
Оценка:
Здравствуйте, Vi2, Вы писали:

I>>Есть exe — сервер. В его интерфейсе функция

Vi2>
I>>[id(2), helpstring("method Init")] HRESULT Init([in] BSTR hostName, [out, retval] long* ErrCode);

I>>сама ф-я такая:
Vi2>
I>>TDMETHODIMP CModernize::Init(BSTR hostName, long *ErrCode)
I>>{
I>> *ErrCode = 3; 
I>> return S_OK;
I>>}

I>>код на клиенте: позднее связывание, объект получаю через CoCreateInstanceEx()
I>>...
Vi2>
I>>long ErrCode=10;
I>>pModern->Init(BSTRHostName,&ErrCode);

I>>После этого ErrCode имеет значение 0
I>>Где грабли?

Vi2>В позднем связывании. [out, retval] возвращается не в параметре pDispParams, а через pVarResult. Пройди через клиентский вызов pModern->Init в Отладчике или по исходникам. Может быть, правда, ошибка в серверной части, которая неправильно упаковывает результат.


Ой, сорри, совсем мозги уже плавятся. Раннее у меня связывание.
Re[3]: Помогите плз.
От: Tom Россия http://www.RSDN.ru
Дата: 13.07.04 09:44
Оценка:
I>Ой, сорри, совсем мозги уже плавятся. Раннее у меня связывание.
А HRESULT после вызова метода точно нормальный?
Народная мудрось
всем все никому ничего(с).
Re[4]: Помогите плз.
От: George Seryakov Россия  
Дата: 13.07.04 23:25
Оценка:
Здравствуйте, Tom, Вы писали:

I>>Ой, сорри, совсем мозги уже плавятся. Раннее у меня связывание.

Tom>А HRESULT после вызова метода точно нормальный?

И, главное, точно ли ты слинковал код с *ErrCode = 3;, нет ли у тебя в оперативной памяти невыгруженного инстанса предыдущей версии программы?
GS
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.