Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2008.06.15;
Скачать: CL | DM;

Вниз

Запуск сервиса   Найти похожие ветки 

 
Tonich ©   (2007-10-02 11:46) [0]

Есть проблема с запуском сервиса. При его создании указывают имя сервиса от которого зависит мой сервис. а когда запускаю свой говорит что зависимый сервис либо отсутствует либо отмечен как удаляемый, хотя на самом деле он запущен и работает... кто-то сталкивался с таким?


 
clickmaker ©   (2007-10-02 11:48) [1]


> Tonich ©   (02.10.07 11:46)

может, неправильно указал имя?


 
Tonich ©   (2007-10-02 11:49) [2]

вот только хотел дописать , ен успел, имя проверял уже не один раз


 
Tonich ©   (2007-10-02 11:49) [3]

а что самое интересно яж это делал а потом убрал, а теперь не получается вернуть обратно ..


 
Tonich ©   (2007-10-02 11:50) [4]

то есть проблема может быть только в неправильном имени, и ни в чем больше?


 
Tonich ©   (2007-10-02 11:52) [5]

а кстати там же если неправильно указать имя то в закладке сервиса (dependencies) не появится ни одного сервиса.. не так ли?


 
Tonich ©   (2007-10-02 15:04) [6]

так что кроме неправильного имени ничего не может быть?


 
clickmaker ©   (2007-10-02 15:13) [7]


> так что кроме неправильного имени ничего не может быть?

"зависимый сервис либо отсутствует либо отмечен как удаляемый"

что за сервис-то, от которого зависит? Из стандартных?


 
Tonich ©   (2007-10-02 15:19) [8]

FireBird 1.5


 
Tonich ©   (2007-10-02 15:20) [9]

ну имя конечно у него другое,  но это сервис этого сервера


 
Tonich ©   (2007-10-02 16:23) [10]

нашел ошибку, только не понятно, почему из-за нее не запускается сервер, у меня в таймере идет ежесекундно опрос состояния сервера, так вот если убрать это опрос, то все ставится и запускается корректно... чего так?


 
Tonich ©   (2007-10-02 16:25) [11]

то есть не сервера а сервиса


 
Сергей М. ©   (2007-10-02 16:46) [12]


> в таймере идет ежесекундно опрос состояния сервиса


Показывай код ..


 
Tonich ©   (2007-10-02 16:58) [13]

правда написанно на бильдаре
// Service Status Structures    _SERVICE_STATUS ServiceStatus;

void __fastcall TfrmHotel::TimerSvcStatusTimer(TObject *Sender)
{
try
 {
  try
   {
    ServiceStatus = GetServiceStatus();
   }
  __finally
   {SetSatatusBarLine(sbServiceSts,GetServiceStatusDesc(ServiceStatus.dwCurrentStat e));}
 }
catch(Exception &Ex)
 {
  return;
 }
}

GetServiceStatus() в ней вызывается  написанная на паскале уже  function QueryStatus

function TbtSvcMan.QueryStatus(const Name: string; var SS: TServiceStatus): boolean;
var
 hSvc         : SC_HANDLE;
begin
 Result := False;
 if not Initialized then Exit;
 hSvc   := OpenService (hSCMan, PChar(Name), SERVICE_ALL_ACCESS);
 if hSvc = 0 then Error("Can not access service: %s", [Name]);
 Result := QueryServiceStatus(hSvc, SS);
 CloseServiceHandle(hSvc);
end;


вот собсвенно и все..


 
Сергей М. ©   (2007-10-03 08:22) [14]

И с каким периодом тикает таймер ?


 
Slym ©   (2007-10-03 08:31) [15]

Tonich ©   (02.10.07 16:23) [10]
и зачем эта проверка? "зависимость" за тебя сама отработает (есле только не через таскман вырубать)


 
Tonich ©   (2007-10-03 13:03) [16]


> Slym ©   (03.10.07 08:31) [15]
(есле только не через таскман вырубать)

вот именно для этого

> Сергей М. ©   (03.10.07 08:22) [14]

по разному ставил, начиная от 250 заканчивая 1000
но я решил уже эту проблему, она решается если выключать таймер когда сервис не зарегестрирован...

а можно другой вопрос в этой теме...
как выключить мой сервис первее всех, при выключении системы
пробовал  SetProcessShutdownParameters(0x301,SHUTDOWN_NORETRY) не помогает


 
Сергей М. ©   (2007-10-03 13:42) [17]


> как выключить мой сервис первее всех, при выключении системы


А с чем связана эта партизанщина ?


 
Tonich ©   (2007-10-03 13:46) [18]


> Сергей М. ©   (03.10.07 13:42) [17]

с тем что мой сервис зависит от сервиса FireBird 1,5 и я хочу просто по выключению моего сервиса сохранить некоторые результаты в базе, ну а как вы понимаете у еня первым падает сервис FB, вот сот собственно с этим и связана эта партизанщина ))


 
Сергей М. ©   (2007-10-03 13:55) [19]


> как вы понимаете у еня первым падает сервис FB


С какого перепугу он "выпадает" первым, если на него имеются референции со стороны твоего сервиса ?


 
Tonich ©   (2007-10-03 13:58) [20]

да вот собственно с этого  ((

MSDN -http://msdn2.microsoft.com/en-us/library/ms685149.aspx

> Note that during service shutdown, the SCM does not take
> dependencies into consideration. The SCM enumerates the
> list of running services and sends the SERVICE_CONTROL_SHUTDOWN
> command. Therefore, a service may fail because another service
> it depends on has already stopped. To set the shutdown order
> of dependent services, use the SetProcessShutdownParameters
> function. The SCM uses this function to give its handler
> 0x1E0 priority. The SCM sends SERVICE_CONTROL_SHUTDOWN notifications
> when its control handler is called and waits for the services
> to exit before returning from its control handler.


 
Tonich ©   (2007-10-04 21:47) [21]

так что, насчет сервиса больше никто ничего не может подсказать ?


 
Сергей М. ©   (2007-10-05 09:12) [22]


> Tonich ©   (04.10.07 21:47) [21]


Cудя по приведенной цитате из MSDN твой сервис после старта должен первым делом повысить свой шатдаун-приоритет до величины не меньшей чем у FB- процесса. Тогда система сначала будет "гасить" твой процесс и только потом FB-процесс.


 
Tonich ©   (2007-10-05 10:37) [23]

так я ж приводил кусочек кода
SetProcessShutdownParameters(0x301,SHUTDOWN_NORETRY)
вот что я делаю при старте сервиса
это же явно больше чем 0x1E0 который стоит у FB  и тем ни менее...


 
Сергей М. ©   (2007-10-05 10:43) [24]

А функция эта у тебя действительно выполнилась успешно ?


 
Tonich ©   (2007-10-05 10:45) [25]

да, результат равен 1


 
Сергей М. ©   (2007-10-05 11:39) [26]


> 0x1E0 который стоит у FB


Как узнал ?


 
Tonich ©   (2007-10-05 12:05) [27]

ну вообще-то вот от сюда

The SCM uses this function to give its handler
0x1E0 priority.

блин, ща проверю


 
Сергей М. ©   (2007-10-05 12:16) [28]

Как проверять собрался ?

Проще всего, думаю, будет сочинить простейшую UDF, в теле которой запросить шатдаун-приоритет тек.процесса.


 
Tonich ©   (2007-10-05 12:18) [29]

да че там сочинять
вначале запросить Get  посмотреть что тм, потом дать Set и потом опять Get


 
Сергей М. ©   (2007-10-05 12:23) [30]


> да че там сочинять


Как это "да че" ?!

Обе ф-ции имеют смысл в контексте текущего процесса !


 
Tonich ©   (2007-10-05 12:59) [31]

нет ну это понято )


 
Tonich ©   (2007-10-05 13:05) [32]

странно в процедуре старта сервиса меняю приорите
значить порядок действий

Get.....0x280 - ?????????  должно же быть 0x1E0
Set.....0x301
Get.....0x301
а 0x280 это с таким приоритетом стартуют все процессы..


 
Сергей М. ©   (2007-10-05 13:14) [33]

Ну ты у FB посмотрел приоритет ?


 
Tonich ©   (2007-10-05 13:19) [34]

а вы имели ввиду у него посмотреть.. ) я думал у моего все теперь понял про UDF



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

Текущий архив: 2008.06.15;
Скачать: CL | DM;

Наверх




Память: 0.54 MB
Время: 0.018 c
15-1206711198
Дмитрий С
2008-03-28 16:33
2008.06.15
vkontakte


2-1211277741
StiTch
2008-05-20 14:02
2008.06.15
Уменожение и деление


2-1211353058
NieL
2008-05-21 10:57
2008.06.15
API функция


2-1211292641
LightRipple
2008-05-20 18:10
2008.06.15
Работа ф-ии RtlPrefixUnicodeString


15-1209529452
@!!ex
2008-04-30 08:24
2008.06.15
Как испоганить исходник??