Вниз
Скачать: CL | DM;

Чёртов Service   Найти похожие ветки 

 
Vladimyr ©   (2005-03-11 11:28) [0]

Доброе время суток всем, кто сумел написать сервис на KOL :)
У меня возникла следующая проблема: до момента показа формы всё работает нормально, а в момент закрытия оной вылезает ошибка обращения к памяти по адресу "00000000".

Код примерно такой:

1. в файле "Testserv_1.inc":

if Start then exit;

2. в файле "TestServ.dpr":

function Start: boolean; stdcall;
begin

  ServTable[0].lpServiceName := SERVICE_NAME;
  ServTable[0].lpServiceProc := @ServiceProc;
  ServTable[1].lpServiceName := nil;
  ServTable[1].lpServiceProc := nil;
  result := StartServiceCtrlDispatcher (ServTable[0]);
  if not result and (GetLastError = ERROR_FAILED_SERVICE_CONTROLLER_CONNECT) then
    MsgOK ("Usual start...");
end;


(то есть проверяем, как стартовали - как сервис или как приложение, и во втором случае запускаем апплет обычным порядком -  тут всё OK, апплет стартует и нормально завершается)

procedure ServiceProc(argc: DWORD; var argv: array of PChar) stdcall;
begin

  ...
  NewForm1 (Form1, pointer (Applet));
  run (Applet);

end;


...а вот тут ошибка - апплет стартует нормально, а в момент завершения обращается к несуществующей памяти...

Сердцем чую, что какая-нибудь ерунда...  :-)


 
Vladimyr ©   (2005-03-11 12:22) [1]

Ещё одно странное наблюдение:
если в процедуре "ServiceProc" добавить после "run (Applet);" команду "MsgOK ("The end");" или "sleep (100);", то апплет завершается без ошибки!

Вот это уж совсем непонятно...  ==(
(хотя вроде бы решает проблему)


 
Vladimyr ©   (2005-03-11 12:38) [2]

Вроде бы нашёл причину: статус сервиса в процедуре ServiceCtrlHandler у меня обновлялся с интервалом 100 мс...

Сам спросил, сам и ответил... <;*}



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.45 MB
Время: 0.023 c
2-1129308522
d_savrasov
2005-10-14 20:48
2005.11.06
QucikReport


14-1129182063
AlexSysAdmin
2005-10-13 09:41
2005.11.06
Нужен любой опыт работы с ЭКЛЗ!!!


1-1129363624
Заур
2005-10-15 12:07
2005.11.06
Как передать данные из потока?


2-1129539982
Vladimir88
2005-10-17 13:06
2005.11.06
Temp Dir


9-1118190026
String
2005-06-08 04:20
2005.11.06
DirectX перерисовка сцены




   Наверх