Windows 7 - - - (- - 1) - Windows 7 блог за разработчици
Какво е услуга?
Ние предпочитаме да се разгледа на услугата като задачите, изпълнявани на заден план, без да пречи потребителските операции. Услуги, свързани с Windows са отговорни за всички видове фон дейност, като се започне с Procedure Call Remote (RPC), Printer Макара и до Network Awareness Местоположение.
Какво не е наред с услугите, работещи 24 часа в денонощието, 7 дни в седмицата?
Има няколко проблема, свързани с услугите, работещи 24x7. Първо, защо нещо трябва да работи (дори и на заден план), ако не е необходимо? Всеки процес на работа (включително услуга) използва скъпоценни памет и процесорни ресурси, които биха могли да бъдат използвани за други приложения и услуги. Ако се изчисли всички услуги, които се изпълняват в един момент, те ще се превърне в значително количество памет, дръжки, конци и натоварването на процесора. Всички тези "прахосани" ресурси намали общата производителност на вашия компютър, неговата отзивчивост и създаде впечатление, че компютърът ви е бавен и бавен. В допълнение, тъй като много услуги са конфигурирани да се стартира автоматично (започне да се показва при стартиране), те оказват влияние върху времето за зареждане на компютъра.
На второ място, те пропилени ресурси, пряко въздействие върху консумацията на електроенергия. Най-голямо натоварване на процесора, компютърът консумира повече електроенергия. Това може да бъде от решаващо значение за преносими компютри и може да съкрати живота на батерията в продължение на няколко часа.
На трето място, постоянна работа непродуктивен софтуерът може да доведе до изтичане и общата нестабилност на системната памет. Това води до повреда на заявлението и, в крайна сметка, на компютъра.
И накрая, ако услугата се изпълнява 24x7, и ако тя е добре позната услуга (която не може да бъде популярен в всяко приложение - например PDF Reader), той създава по-голяма атака повърхност. Един хакер може да използва информацията, че определен популярното приложение инсталира услуга, която работи 24x7, и се опитват да го пляскане да получат достъп до компютъра.
Това каза, може да се чудя защо толкова много разработчици настройват услугите си на постоянна работа, ако имат още една възможност. Дори преди Windows 7 няколко начина да стартирате услугата е на разположение:
- За хора с увреждания (инвалиди) напълно забранява на услугата и я предпазва от тичане и да започне зависимите услуги - това означава, че потребителят трябва да активирате услугата за ръчно от контролния панел или от командния ред
- Ръчно (Manual) започва на услугата, както се изисква (поради зависимостите към други услуги), или когато услугата се извиква с помощта на съответните приложения API, както ще бъде показано по-долу
- Автоматично (Auto) започва служба при влизане
- Автоматично Забавена (Automatic отложен старт) - нов тип старт, въведена в Windows Vista, с помощта на който се среща стартирането на услугата, след като изтеглянето приключи и да извършват първоначални операции, което ускорява системата за изстрелване.
За съжаление, много ISV (включително самата Microsoft Corporation) продължават да персонализирате своята услуга за автоматично (Automated) или автоматично отложен старт (Automatic Забавено), тъй като всички изглеждат най-простото решение. Услугата просто работи 24/7 и е винаги на разположение, което премахва необходимостта да се провери зависимости или дали услугата се изпълнява.
Появата на услуги със стартирането на спусъка
Последната точка се отнася до разтегливост. Предприемачът да конфигурирате всеки ETW събитие за ускоряване на услуга, която осигурява добър инструмент за управление на пускане и спиране службите за кандидатстване.
Така че това, което е на спусъка?
А задействане се състои от:
- Видът на спусъка събитие
- Подтип спусъка събитие
- Действията трябва да бъдат взети при настъпването на спусъка събитие
- Един или повече елементи от данни, свързани с спусъка (за специфични видове праговите събития)
Подтип и свързаните елементи от данни задейства заедно да определят условията за услугата за уведомяване на събитието. т Формат на данните зависи от вида на спусъка събитие; елемент на данните може да се състои от двоични, низ или няколко реда данни на.
Работа с Trigger Старт на услугите
За съжаление, на потребителския интерфейс на Windows 7 на услугите MMC конзола, не графично представяне Trigger Старт услуги. Въпреки това, вие имате две възможности. Все още можете да използвате добрата стара Service Configuration командния ред - sc.exe или използвайте метода WIN32 ChangeServiceConfig2 за софтуер конфигурационни параметри на услуги за стартиране, както ще бъде показано в тази статия.
Използването искане услуга за данни спусъка SC.exe (Query Service Trigger информация)
Това е време да се позабавляваме. Нека започнем с информация за конфигурацията на някои услуги. Общата форма за използване на служебната конфигурация, е както следва:
Когато сървъра е незадължителен параметър, който показва на компютъра (по подразбиране, с който работите локален компютър):
- команда - операция трябва да се извърши, например, да задейства искане за данни
- наименование на услугата - е името на услугата, която ще работи
- опции - различните стойности (параметри), които могат да се извършват, за да изберете услугата
Нека започнем с конкретна молба на нейна спусъка конфигурация. За това ние трябва да тичам прозорец Windows Shell:
1. Отворете менюто "Старт".
2. Вид CMD в полето за търсене.
3. Изберете cmd.exe.
4. Въведете SC qtriggerinfo W32Time, и след това натиснете клавиша.
Ето как трябва да изглежда:
Както можете да видите, ние поиска задействане W32Time данни услуга, която е конфигуриран да се стартира, когато свържете компютър към домейн и да се спре, когато е изключен от домейна.
Microsoft е обновила Windows 7 командния ред sc.exe заявление за подпомагане на конфигурацията и поддържаните спусъците. Въведете SC triggerinfo в прозореца на Windows Shell и натиснете Enter. Резултатът ще бъде подобен на този, показан по-долу, и той ще съдържа всички спусъците и информация за това как да конфигурирате услугата да ги използвате.
ProgrammnayanastroykaTrigger Старт ServicespripomoschiChanceServiceConfig2
По-интересен от гледна точка на развитието аспект е създаването на услуги, в зависимост от спусъка и да използвате кода за конфигуриране на услугата. В Windows 7, можете да използвате функцията за да коригира данните за задействане ChangeServiceConfig2 услуги и функцията QueryServiceConfig2 да им се обадя.
Регистрацията е услуга задейства повикване ChangeServiceConfig2 използване SERVICE_CONFIG_TRIGGER_INFO за dwInfoLevel параметър представителство и спусък за събиране на данни в SERVICE_TRIGGER_INFO структура чрез създаване lpInfo. В допълнение, могат да бъдат определени още задействане на данни. По-долу е пример за услуга инсталатор функция, която създава услуга тригер USB-устройство, наречено MyService:
Забележка: Всички услуги се контролират от мениджъра Service Control (ВСС), който ще обсъдим в друга статия.
Това може да се види в горния фрагмент код, за първи път се справя (hScm) SCM предизвикателство openSCManager. На следващо място, което наричаме openService и определи SCM дръжка - hscm, и името на услугата - SERVICE_NAME, до която искате да осъществите достъп. Последният параметър, SERVICE_ALL_ACCESS, показва, че ние имаме пълен достъп до услугите. Ако приемем, че сега е валиден дръжка, ние започваме да се създаде отделна структура, която скоро ще се използва за конфигуриране на услугата.
SERVICE_TRIGGER_SPECIFIC_DATA_ITEM определя типа на спусъка събитие. Тя съдържа данни за услугата събитие спусъка. В нашия случай, ние определяме низ, описващ връзката на USB-устройство.
След това задайте структура SERVICE_TRIGGER, което е услуга задействане на събития. Имайте предвид, че това е мястото, където ние задайте типа на спусъка (устройство връзка), действието (старт на услугата) и подтипа на спусъка (определен вид USB дискове). След това ние определяме едно устройство, което ще доведе до услугата. Имайте предвид, че можете да изберете списък на устройствата и тяхната GUID. Трябва също да се отбележи, че ние не искаме услуга да се задейства, когато се свързвате всякакви USB-устройства, като мишка или фотоапарат. Искаме услугата да започне само, когато USB-диск.
И накрая, ние определяме структурата на SERVICE_TRIGGER_INFO който съдържа спусъка на събитието услуга за данни. Тази структура просто показва SERVICE_TRIGGER структура попита ние по-рано, а броят на джапанки, броят на която в този случай е равна на един.
Сега можем да извикате функцията ChanceServiceConfig2 и преминават манипулатор на услугата, която искате да конфигурирате, параметър SERVICE_CONFIG_TRIGGER_INFO, което показва, че ние искаме да конфигурирате спусъка на услуги, както и за нищожна.
Това е всичко. Ако сте направили всичко правилно, услугата да започне, когато се свържете с USB твърд диск.
В следващата статия ще обсъдим как да напишете проста реализация на .NET услуга, която се създаде, за да започне, когато свържете USB устройството.
Можете също така да работи в Windows 7 Start Услуги Trigger с Windows 7 Онлайн курс. и е част от Канал 9 Център за обучение.