Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2008.06.15;
Скачать: [xml.tar.bz2];

Вниз

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

 
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 вся ветка

Форум: "WinAPI";
Текущий архив: 2008.06.15;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.53 MB
Время: 0.007 c
15-1209693672
Поп Гапон
2008-05-02 06:01
2008.06.15
В США проблему нефти решили травой.


2-1211459186
Tommy
2008-05-22 16:26
2008.06.15
DBLookupCombobox, postgresql, ADO


11-1190055258
rainstuff
2007-09-17 22:54
2008.06.15
ScrollBox и свойства Left, Top


15-1209811351
kiwiw
2008-05-03 14:42
2008.06.15
провод сетевой карточки


2-1211222703
AeRo
2008-05-19 22:45
2008.06.15
работа с ListBox





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский