почему DllCanUnloadNow не смотрит на PrxDllCanUnloadNow
От: Аноним  
Дата: 25.01.10 10:06
Оценка:
Стандартная имплементация DllCanUnloadNow:

STDAPI DllCanUnloadNow(void)
{
#ifdef _MERGE_PROXYSTUB
HRESULT hr = PrxDllCanUnloadNow();
if (FAILED(hr))
return hr;
#endif
return _AtlModule.DllCanUnloadNow();
}

Почему результат вызова PrxDllCanUnloadNow, в частности S_FALSE, игнорируется?
Ведь у библиотеки могут быть только ссылки на прокси и ни одной на компоненты, если они используются удаленно.
Re: почему DllCanUnloadNow не смотрит на PrxDllCanUnloadNow
От: BugSlayer Россия  
Дата: 30.01.10 19:55
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Стандартная имплементация DllCanUnloadNow:


А>STDAPI DllCanUnloadNow(void)

А>{
А>#ifdef _MERGE_PROXYSTUB
А> HRESULT hr = PrxDllCanUnloadNow();
А> if (FAILED(hr))
А> return hr;
А>#endif
А> return _AtlModule.DllCanUnloadNow();
А>}

А>Почему результат вызова PrxDllCanUnloadNow, в частности S_FALSE, игнорируется?

А>Ведь у библиотеки могут быть только ссылки на прокси и ни одной на компоненты, если они используются удаленно.
FAILED(S_FALSE) = FALSE
Re: почему DllCanUnloadNow не смотрит на PrxDllCanUnloadNow
От: Аноним  
Дата: 01.02.10 09:36
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Стандартная имплементация DllCanUnloadNow:


А>STDAPI DllCanUnloadNow(void)

А>{
А>#ifdef _MERGE_PROXYSTUB
А> HRESULT hr = PrxDllCanUnloadNow();
А> if (FAILED(hr))
А> return hr;
А>#endif
А> return _AtlModule.DllCanUnloadNow();
А>}

А>Почему результат вызова PrxDllCanUnloadNow, в частности S_FALSE, игнорируется?

А>Ведь у библиотеки могут быть только ссылки на прокси и ни одной на компоненты, если они используются удаленно.

Это ошибка в визарде ATL. Надо исправлять руками:

if (S_OK != hr)
  return hr;


Вроде бы, они исправили в последней версии. А может и нет, я точно не помню.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.