întrebarea 9

Întrebarea 9. Serviciul în Windows. scop, principiile de bază de funcționare, spre deosebire de drivere. Cum se instalează serviciul în Windows.

Arhitectura serviciilor de sistem pentru Windows NT implică trei tipuri. Ee este serviciile de sistem de management al kernel-ului (Service Manager Control sau CSM). CSM este rulat la pornirea sistemului și se execută până când calculatorul este oprit. manager de servicii de sistem interacționează cu o singură mână cu programul de control. iar pe de altă parte - la serviciile de sistem. Acestea sunt principalele sarcini ale unui manager:

  • Pornește la pornirea serviciilor pe care ar trebui să fie pornite automat.
  • bază de date de configurare de stocare care conține informații cu privire la toate serviciile.
  • Primirea unei solicitări din programele de control și transferul de servicii de sistem.

Windows NT definește două tipuri de servicii de sistem. (Servicii de kernel-mode) așa-numitul serviciu kernel-mode - - Unul dintre ele drivere de dispozitiv. Un alt tip de - serviciu Win32. procesele-Win32 convențional folosind un set special de funcții pentru a interacționa cu managerul de servicii de sistem.

Serviciul are o funcție principală. Un program poate lucra un serviciu, și pot include mai multe servicii. Funcția principală umple o matrice care descrie toate caracteristicile programului de serviciu susținut. Matricea este trecut apel StartServiceCtrlDispatcher. Pentru fiecare serviciu, care face parte din fișierul executabil, matrice conține ID-ul de text și punctul de intrare. punctul de intrare de serviciu - o funcție de tip void. ia de obicei argumentele argc și argv. Dar, în contrast cu argumentele funcției principale. puncte de intrare de serviciu de caz nu sunt conectate cu linia de comandă. Ei au umplut Managerul CSM.

În procesul de tratare CSM într-o funcție care este punctul de intrare al serviciului, rolul important jucat de serviciul structura _ STATUS. Funcția este punctul de intrare utilizează RegisterServiceCtrlHandler apelul pentru a înregistra un handler pentru a interacționa cu Service SCM. În plus, subrutina serviciu de inițializare apelurile la SetServiceStatus apelului de a informa CSM a stadiului actual al serviciului (serviciul poate fi într-una din stările: inițializare, funcționare sau oprire). Dacă inițializare necesită mai mult de câteva secunde, este recomandat să-l efectueze într-un flux de program separat. Crearea unui flux separat de program va trebui, de asemenea, dacă intenționați să creați un serviciu care va lucra exclusiv în fundal.

Diferența principală dintre conducătorul auto a serviciului constă în faptul că șoferul poate funcționa în inel 0 și modul de utilizator, iar serviciul funcționează numai în modul de utilizare. Instalarea serviciului prin managerul CSM și șofer prin intermediul. inf fișier, cu toate acestea, conducătorul auto poate fi instalat prin intermediul managerul CSM, dar nu toate tipurile de drivere pot fi instalate prin managerul CSM.

Codul de serviciu care emite un semnal sonor, la începutul fiecare oră (perioada de timp poate fi schimbat de la linia de comandă):