Re[4]: ATL 7.0 Service не работает
От: spacecraft Россия  
Дата: 29.05.04 07:44
Оценка:
Здравствуйте, DavidTelAviv, Вы писали:

Nope. This is not suitable. ATL 7.0 does not support _Module global variable anymore. There is _pAtlModule variable declared as:

__declspec(selectany) CAtlModule* _pAtlModule = NULL;

Anyhow, RegisterClassObject function defined in CAtlExeModuleT template, and what I can do is to call it in the next form:

hr = CAtlExeModuleT<CMyService>::RegisterClassObjects(CLSCTX_LOCAL_SERVER, REGCLS_MULTIPLEUSE | REGCLS_SUSPENDED);

But result is the same. So, how come Microsoft put this call in PreMessageLoop function of CAtlExeModuleT template, if a service can be started without it? Also, will a service be operable without the call?



Mikhail



DTA>Здравствуйте, Аноним, Вы писали:


DTA>And if you try this :

DTA> hr = _Module.RegisterClassObjects(CLSCTX_LOCAL_SERVER | CLSCTX_REMOTE_SERVER, REGCLS_MULTIPLEUSE);
DTA>?
DTA>In fact ATL template calss calls registration.


А>>Здравствуйте, DavidTelAviv, Вы писали:


А>>msvcrt71d.dll exists in system32 folder.


А>>I found why services could not be started. The function below returns code 1:


А>>
А>>hr = RegisterClassObjects(CLSCTX_LOCAL_SERVER, REGCLS_MULTIPLEUSE | REGCLS_SUSPENDED);
А>>

А>>If I comment the row, the service starts successfully. Otherwise, it sucks. Anyway, I'd like to know why is that? Is it Microsoft issue, or mine?

А>>Mikhail



DTA>>>Здравствуйте, spacecraft, Вы писали:



DTA>>>Check if you have this one in sys32: MSVCR71d.dll MSVCRT.dll., perhaps some more. Your machine lacks some runtime files.

DTA>>>David

S>>>>Hello All!


S>>>>Такая проблема.


S>>>>Работаю на Win2k Advanced Server. Забацал новую службу в VC++ 2003. Сгенерировал мастером ATL 7.0 каркас, скомпилировал, зарегистрировал (запустил .exe с ключем /Service). Пробую стартовать службу из консоли Service Control Manager'а и получаю отлуп в MessageBox весьма пространного содержания:


S>>>>Could not start blah-blah-blah service on Local Computer.

S>>>>The service did not return an error. This could be an internal Windows error or an internal service error.
S>>>>If the problem persists, contact your system administrator.

S>>>>Во всей этой истории напрягает больше всего то, что каркас службы сгенерированный в VC 6.0 запускается сразу же, а то что делает мастер ATL 7.0 из VC 2003 -- не работает. Вероятно, требуется какая-то доработка этого каркаса. В MSDN про такие фишки ничего нет. Может подскажет кто-нить, где тут собака порылась?


S>>>>Спсиб.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.