ferestre de programare 7 servicii cu elemente declanșatoare (h

Preferăm să ia în considerare acest serviciu ca sarcini care rulează în fundal fără a interfera cu operațiunile utilizatorului. Servicii Windows sunt responsabile pentru toate tipurile de activitate de fond, variind de la serviciul Remote Procedure Call (RPC), serviciul Printer Spooler, și până la Rețeaua de conștientizare Locul de amplasare.

Resurse În al doilea rând, aceste irosite, un impact direct asupra consumului de energie electrică. Cu cât sarcina pe CPU, vom da, mai multă putere computerului consumă. Acest lucru poate fi extrem de important pentru laptop-uri și poate scurta durata de viață a bateriei pentru câteva ore.

În al treilea rând, software-ul de lucru neproductivă constantă poate provoca instabilitatea sistemului de memorie de scurgere și de ansamblu. Acest lucru poate duce la insuficienta aplicare și, în cele din urmă, computerul.

În cele din urmă, în cazul în care serviciul se execută 24x7, iar dacă acesta este un serviciu bine cunoscut (care nu poate fi popular în orice aplicație - de exemplu, PDF Reader), creează o suprafață mai mare de atac. Un atacator poate folosi informațiile pe care o anumită aplicație populară instalează un serviciu care se execută 24x7, și să încerce să-l sparge pentru a avea acces la calculator.

Acestea fiind spuse, vă întrebați de ce atât de mulți dezvoltatori configura serviciile lor pe un loc de muncă permanent în cazul în care au o altă oportunitate. Chiar înainte ca Windows 7 câteva moduri de a porni serviciul a fost disponibil:

  • Pentru persoane cu handicap (dezactivat) dezactivează complet serviciul și împiedică rularea și să înceapă serviciile dependente - aceasta înseamnă că utilizatorul trebuie să permită manual serviciul din Panoul de control sau linia de comandă
  • Manual (Manual) pornește serviciul după cum este necesar (din cauza dependențele altor servicii), sau atunci când serviciul este invocat prin intermediul aplicațiilor API relevante, după cum va fi prezentat mai jos
  • Automat (Auto) pornește serviciul la conectare
  • Automat Întârziat (Automatic (Delayed Start) - un nou tip de pornire, introdus în Windows Vista, cu ajutorul căreia lansarea serviciului are loc după ce descărcarea este completă și de a efectua operațiuni inițiale, care accelerează sistemul start-up

Din păcate, multe ISV (inclusiv foarte Microsoft) să continue pentru a personaliza serviciul lor în mod automat (automat) sau pornire întârziată automată (Automatic întârziată), ca toate acestea par o soluție simplă. Serviciul funcționează doar 24/7 și este întotdeauna disponibil, eliminând necesitatea de a verifica dependențele sau dacă serviciul rulează.

Apariția serviciilor cu lansarea pe trăgaci

Ultimul punct se referă la extensibilitate. Ca dezvoltator, puteți configura orice eveniment ETW ca un declanșator pentru un serviciu care vă oferă un instrument foarte bun pentru a controla porni și opri serviciile aplicației.

Deci, ce este pe trăgaci?

Un declanșator este compus din:

  • Tipul de eveniment declanșator
  • eveniment Subtip de declanșare
  • Acțiunile care trebuie luate în comiterea unui eveniment declanșator
  • Unul sau mai multe elemente de date asociate cu declanșare (pentru anumite tipuri de evenimente de declanșare)
    Subtip și elemente asociate de date de declanșare specifica împreună condițiile pentru serviciul de notificare a evenimentului. Formatul element de date depinde de tipul de eveniment declanșator; element de date poate consta dintr-un binar, șir sau mai multe linii de date.

Lucrul cu declanșatoare Start Servicii
Din păcate, interfața cu utilizatorul de Windows 7 consola MMC Servicii, nici o reprezentare grafică de declanșare Start Servicii. Cu toate acestea, aveți două opțiuni. Puteți utiliza în continuare bun Sc.exe vechi (serviciul de configurare instrument de linie de comandă) sau de a folosi metoda WIN32 ChangeServiceConfig2 pentru configurarea software-ului opțiuni de servicii de pornire, după cum vor fi afișate în acest articol.

Utilizarea Sc.exe cerere de declanșare de serviciu de date (interogare Serviciul de declanșare Informații)
Este timpul să te distrezi. Să începem cu informații despre configurația unor servicii. Forma generală pentru utilizarea configurației serviciului este după cum urmează:

sc [Comanda] [nume de serviciu] .


În cazul în care serverul este opțională, și implicit lucrați cu un computer local:

  • comandă - o operație pe care doriți să efectuați, de exemplu, să declanșeze o cerere de date
  • Nume de serviciu - acesta este numele de serviciu cu care doriți să lucrați
  • - opțiuni diferite valori (opțiuni) pe care le puteți efectua pentru a configura Serviciu

Să începem cu o cerere de serviciu special cu privire la configurația sa de declanșare. Pentru aceasta avem nevoie pentru a rula fereastra pentru Windows Shell:

[I] 1. Deschideți meniul „Start“.
2. Tipul cmd în caseta de căutare.
3. Selectați cmd.exe.
4. Introduceți sc qtriggerinfo w32time, apoi apăsați tasta enter.
Iată cum ar trebui să arate:

După cum puteți vedea, am solicitat W32time date de declanșare serviciu care este configurat pentru a începe atunci când conectați un computer la domeniul și se va opri atunci când deconectat de domeniu.

Microsoft a actualizat Windows 7 linie de comandă aplicație Sc.exe pentru a sprijini configurarea și declanșatoarele acceptate. Intră sc triggerinfo în Windows Shell fereastra și apăsați Enter. Rezultatul va fi similar cu cel prezentat mai jos, și va conține toate declanșatorii și informații cu privire la modul de configurare a serviciului de a le utiliza.

DESCRIERE:
Se schimbă caracteristicile activării serviciului.
UTILIZARE:
sc <сервер> triggerinfo [numele serviciului] <параметр1> <параметр2>.

Software-ul de instalare de declanșare Start Services utilizând ChanceServiceConfig2
Mai interesant în ceea ce privește aspectul de dezvoltare este crearea de servicii, în funcție de trăgaci, și de a folosi codul pentru a configura serviciul. În Windows 7, puteți utiliza caracteristica pentru a ajusta datele de declanșare de serviciu ChangeServiceConfig2 și funcția QueryServiceConfig2 să le numim.

Înregistrarea este serviciul de apel de declanșare folosind ChangeServiceConfig2 SERVICE_CONFIG_TRIGGER_INFO parametrul dwInfoLevel și de declanșare de înregistrare a datelor de prezentare în structura SERVICE_TRIGGER_INFO prin setarea lpInfo. În plus, pot fi specificate mai multe date de declanșare. Mai jos este un exemplu al unei funcții de instalare serviciu care creează un serviciu USB dispozitiv de declanșare numit MyService.

defini SERVICE_NAME L "MyService"
// setați GUID dispozitiv
const static GUID GUID_USBDevice = 0x53f56307, 0xb6bf, 0x11d0,
0x1e, 0xfb, 0x8b >>;

BOOL _SetServiceToStartOnDeviceTrigger ()
BOOL fResult = FALSE;

SC_HANDLE hScm = OpenSCManager (
NULL, // masina locala
NULL, // bază de date activă
SC_MANAGER_CONNECT);

în cazul în care (hScm! = NULL)
SC_HANDLE hService = OpenService (
hScm,
SERVICE_NAME,
SERVICE_ALL_ACCESS);

Dacă (hService! = NULL)

LPCWSTR lpszDeviceString = L "USBSTOR \\ GenDisk";
SERVICE_TRIGGER_SPECIFIC_DATA_ITEM deviceData =;
deviceData.dwDataType = SERVICE_TRIGGER_DATA_TYPE_STRING;
deviceData.cbData =
(Wcslen (lpszDeviceString) +1) * sizeof (WCHAR);
deviceData.pData = (PBYTE) lpszDeviceString;


SERVICE_TRIGGER st;
st.dwTriggerType =
SERVICE_TRIGGER_TYPE_DEVICE_INTERFACE_ARRIVAL;
st.dwAction = SERVICE_TRIGGER_ACTION_SERVICE_START;
st.pTriggerSubtype = (GUID *) GUID_USBDevice;
st.cDataItems = 1;
st.pDataItems = deviceData;


SERVICE_TRIGGER_INFO; sti
sti.cTriggers = 1;
sti.pTriggers = st;
sti.pReserved = 0;

fResult = ChangeServiceConfig2 (
hService,
SERVICE_CONFIG_TRIGGER_INFO,
sti);
>
CloseServiceHandle (hService);
>
CloseServiceHandle (hScm);

if (! fResult)
printf ( "Serviciul de înregistrare de declanșare a eșuat \ n (.)",
GetLastError ());
>
fResult reveni;
>


Notă: Toate serviciile sunt controlate de Control Service Manager de (CSM), pe care le vom discuta într-un alt articol.

Puteți vedea în fragmentul de cod de mai sus, vom lua mai întâi mânerul (hScm) către CSM prin apelarea openSCManager. În continuare, noi numim openService și să treacă un mâner la CSM - hscm și numele serviciului - SERVICE_NAME, la care vrem să acceseze. Ultimul parametru, SERVICE_ALL_ACCESS, indică faptul că avem acces deplin la serviciile. Având în vedere că avem acum în serviciul unui mâner valid, vom începe să creeze o structură separată, pe care îl vom folosi în curând pentru a configura serviciul.

SERVICE_TRIGGER_SPECIFIC_DATA_ITEM specifică tipul de eveniment declanșator. Acesta conține date despre serviciul eveniment de declanșare. În cazul nostru, vom defini un șir de caractere care descrie conexiunea USB-drive.

Apoi ne-am stabilit SERVICE_TRIGGER structura, care este un eveniment declanșator de serviciu. Rețineți că acest lucru este în cazul în care ne-am stabilit tipul de declanșare (dispozitiv de conectare), acțiunea (începutul serviciului), și subtipul de declanșare (un anumit tip de USB-drive). Apoi definim un dispozitiv care va cauza serviciului. Rețineți că puteți selecta o listă de dispozitive și GUID lor. De asemenea, trebuie remarcat faptul că noi nu vrem serviciu să fie declanșat la conectarea oricărui dispozitiv USB, cum ar fi un mouse sau un aparat de fotografiat. Dorim ca serviciul să înceapă numai atunci când USB-drive.

În cele din urmă, vom defini structura SERVICE_TRIGGER_INFO care conține declanșatorul de servicii de date eveniment. Această structură indică pur și simplu structura SERVICE_TRIGGER am cerut mai devreme, iar numărul de flip-flops, numărul de care în acest caz este egal cu unu.

Acum putem apela funcția și să treacă ChanceServiceConfig2 mâner la serviciul pe care dorim să configurați un parametru SERVICE_CONFIG_TRIGGER_INFO, ceea ce indică faptul că dorim să configurați serviciul de afișare, și Null.

Asta e tot. Dacă ați făcut totul corect, serviciul pentru a începe atunci când conectați un hard disk USB.

În următorul articol voi discuta despre cum să scrie o implementare simpla a unui serviciu .NET care ne-am înființat pentru a lansa atunci când conectați unitatea USB.

Puteți lucra, de asemenea, în Windows 7 declanșatoare Start Servicii cu Windows 7 de instruire online, care face parte din 9 Learning Center canal.

Link-uri conexe

articole similare