Вниз
Скачать: 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.025 c
4-1125411791
Barvetal
2005-08-30 18:23
2005.11.06
Есть ли стандартный COM-сервер(LOCAL!) для открытия url?


1-1129709934
maVladimir
2005-10-19 12:18
2005.11.06
Timer. Рестарт.


3-1127449796
SQL-nik
2005-09-23 08:29
2005.11.06
Обнуление "счетчика" уникального поля


3-1127550029
menart
2005-09-24 12:20
2005.11.06
ADO API


14-1128680845
SPeller
2005-10-07 14:27
2005.11.06
Бас-подгон от государства




   Наверх