Главная страница
    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.52 MB
Время: 0.023 c
2-1211275674
fenixgold
2008-05-20 13:27
2008.06.15
Как правильно создать динамически ComboBox и удалить


2-1211280284
assassin8899
2008-05-20 14:44
2008.06.15
Связь ADOTable


2-1211361230
red_imp
2008-05-21 13:13
2008.06.15
Странный глюк при работе с двумя формами.


15-1209962523
Илья Корстин
2008-05-05 08:42
2008.06.15
Синхронизация двух Outlook


2-1211216137
Константин
2008-05-19 20:55
2008.06.15
Обращение к параметру в SQL запрос по имени





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский