funcţia startservice

[În] Manipulați la serviciu. Acest mâner este returnat de funcția sau OpenService CreateService. și ar trebui să aibă dreptul de a avea acces la SERVICE_START. Pentru mai multe informații, consultați serviciile de protecție a articolului și drepturile de acces.

[În] Numărul de rânduri în lpServiceArgVectors matrice. Dacă lpServiceArgVectors are valoare NULL (NULL), acest parametru poate fi nulă.

[In] pointer la o serie de indicii pentru șir care este trecut ca un parametrii de service-nul terminat. Serviciile soferului nu primesc aceste opțiuni. Dacă nu parametrii sunt transmise serviciului, acest parametru poate fi valoarea NULL (NULL). Serviciul se referă la aceste opțiuni prin ServiceMain funcția sa. Primul parametru (argv [0]) - acesta este numele serviciului implicit, urmat de parametrii, dacă există, în lpServiceArgVectors matrice.

Dacă funcția reușește, valoarea returnată este nenul.

Dacă funcția eșuează, valoarea returnată - zero. Pentru a obține informații despre eroare extinse, apel GetLastError.

Următoarele coduri de eroare poate fi instalat Manager Service Control. Altele pot fi stabilite de către funcțiile de registru, care sunt numite de către managerul de control al serviciului.

Procesul de serviciu a fost pornit, dar aceasta nu a cauzat funcția StartServiceCtrlDispatcher. sau fir care apelurile pot fi blocate program de management de procesare a funcției StartServiceCtrlDispatcher.

În cazul în care conducătorul auto începe serviciul, funcția StartService nu se întoarce, atâta timp cât driverul de dispozitiv a terminat inițializarea.

Când începe serviciul, Manager Service Control (CSM). dacă este necesar, creează un proces de serviciu. În cazul în care acțiunile de serviciu specificate pot exista deja un proces cu alte servicii cerute de proces. Funcția StartService nu așteaptă prima actualizare a statutului noului serviciu, deoarece aceasta poate dura ceva timp. In schimb, se returnează valoarea atunci când Control Service Manager (CSM) este notificat de către Serviciul de Control Manager de faptul că fluxul de ServiceMain pentru acest serviciu a fost creat cu succes.

Managerul Service Control (CSM) stabilește valoarea implicită a statului următor, înainte de valoarea de returnare a StartService funcției.

  • Stadiul actual al serviciului este setat la SERVICE_START_PENDING.
  • Mijloace de control adoptate nu va stabili (zero).
  • Valoarea CheckPoint este setată la zero.
  • timp WaitHint setat la 2 secunde.

Procesul de asteptare poate determina dacă noul serviciu a terminat inițializarea, de asteptare periodic funcția QueryServiceStatus. pentru a face o anchetă cu privire la starea serviciului.

Serviciul nu poate provoca StartService în timpul inițializării. Motivul este faptul că Serviciul de Control Manager (SCM) în timpul datelor de control al serviciului de bază bloc de inițializare, astfel încât StartService apel blocat. Odată ce serviciul informează Manager Service Control (CSM). că a lansat cu succes, serviciul poate provoca StartService.

Ca ControlService. Funcția StartService va fi blocat timp de 30 de secunde, în cazul în care un serviciu este ocupat cu procesarea codul de control. În cazul în care un birou ocupat încă nu a revenit la funcția sa handler atunci când se termină pauza, funcția StartService eșuează ERROR_SERVICE_REQUEST_TIMEOUT. Acest lucru se întâmplă deoarece Manager Service Control (CSM) procesează simultan numai serviciul de notificare un control.

articole similare