Upravljanje napajanjem u sustavu Windows. Kontrola snage u tečaju performansi sustava Windows
Izolacija kernela je sigurnosna tehnologija koja se temelji na virtualizaciji, koja osigurava dodatnu razinu zaštite od inteligentnih napada. Integritet memorije je jedna od komponenti tehnologije izolacije kernela - funkcija je namijenjena da spriječi umetanje zlonamjernog koda u visoke sigurnosne procese. Zaštita je osigurana zbog činjenice da je na stranici virtualne memorije kernela započinje tek nakon uspješnog prolaska provjere integriteta.
Razmislite o tome kako omogućiti funkciju "Integritet memorije" u sustavu Windows 10. travnja 2018. ažuriranje za poboljšanje računalne sigurnosti.
Omogućiti integritet memorije
- Otvori Windows Defender Security Center.
- Odaberite odjeljak "Sigurnost uređaja".
- U odjeljku "Kernel Insulation Odjeljak" kliknite vezu "Informacije o jezgrama izolacije".
- Premjestite prekidač integriteta memorije na aktivni položaj.
Nakon završetka tih radnji morate ponovno pokrenuti računalo tako da promjene stupaju na snagu.
Bilješka: Da biste radili ovu značajku, vaš procesor mora podržavati tehnologije virtualizacije. Osim toga, virtualizacija mora biti omogućena u BIOS-u ili UEFI. U suprotnom, funkcija će biti nedostupna.
Korekcija problema s izolacijom kernela
U nekim slučajevima možete naići na probleme s kompatibilnošću u nekim aplikacijama, ako je izolacija kernela uključena. Da biste riješili probleme morat će isključiti funkciju.
Ako pokušavate onemogućiti integritet memorije u sigurnosnom centru za Windows Defender, ali je opcija postala neaktivna i prikazana je poruka. "Ovaj parametar pokreće vaš administrator", a zatim još uvijek možete deaktivirati funkciju pomoću registra sustava.
Bilješka: Neispravna promjena registra može dovesti do ozbiljnih problema. Preporuča se izraditi sigurnosnu kopiju registra sustava Windows prije izvođenja ovih koraka. U izborniku Registry Editory odaberite Datoteka\u003e Izvoz u spremanje sigurnosne kopije.
- Pritisnite kombinaciju tipki sustava Windows + R da biste prikazali prozor "Run".
- Unesite Regedit i kliknite U redu da biste pokrenuli uređivač registra.
- Idite na sljedeći način:
- Dvostruki klik Omogućeno..
- Promijenite vrijednost od 1 do 0.
- Kliknite U redu.
Da biste onemogućili, možete koristiti i spremni
Pošaljite dobro djelo u bazu znanja je jednostavna. Koristite obrazac ispod
Učenici, diplomirani studenti, mladi znanstvenici koji koriste bazu znanja u studijima i radu bit će vam vrlo zahvalni.
Objavljeno na http://www.llbest.ru/
1. Teorijske informacije
1.1 Razvoj upravljačkih programa Windows kernela
Kratak teorijske informacije
Razvoj upravljačkih programa kernela
Vozač (s engleskog upravljačkog programa) je računalni program s kojim drugi program (obično operativni sustav) dobiva pristup hardverskom standardu.
Shematski, pokazati kako različite vrste vozača rade:
Prikladno podijeljeno na 2 vrste:
- Upravljači kernela (rade na razini povlastica, ali nemojte komunicirati s bilo kojim korisničkim programom, niti s uređajem. To je od njih ćemo početi (također ih također mogu koristiti).
Upravljački programi su potrebni za interakciju između korisničkog programa i uređaja, naime, prijenos podataka između njih, kontrole uređaja. Štoviše, uređaji mogu biti i stvarni i virtualni). Vozač ne mora upravljati bilo kojim fizičkim uređajem. Neki OS omogućuje stvaranje i vozača virtualnih uređaja - objekata koji se ponašaju slično / out uređajima, ali ne reagiraju na bilo koji fizički uređaj.
Komponente kernela izvodi se u privilegiranom načinu procesora (nazvan mod kernela), može izvesti sve, naime:
- mogu izvršiti privilegirane naredbe procesora (na primjer, LGDT),
- može imati pristup podacima sustava i kod,
- imati izravan pristup opremi, kao što su portovi
- imati pristup memorijskim stanicama; Vozač ne može izravno manipulirati fizičkom memorijom, ali može dobiti virtualnu adresu za bilo kakve fizičke i manipulirati njima.
Ako trebate pisati nekoj ozbiljnoj aplikaciji, raditi s pristupom unutarnjim funkcijama ili strukturama sustava podataka, možete naići na mnoštvo ograničenja, prevladati koji samo emisije vaš kod u prostoru adresa sustava. Od dokumentacije postoji samo jedan način da to učinite - instalirajte upravljački program. Ova metoda je relativno jednostavna, pouzdana i najvažnije, potpuno opremljena podrškom same operacijskog sustava.
Smatra se da jezgreni kod (zapravo je sustav) u potpunosti pouzdan. Stoga se učitava u prostor za adresu sustava, vozač postaje dio sustava i sva ograničenja se ne postavljaju na njemu. U sustavu Windows, gotovo je jedini način za pisanje OS programera za pisanje komponenti sustava kernela.
DDK (komplet za razvoj uređaja) koristi se za pisanje i istraživanje metoda razvoja vozača - sustav za razvoj vozača.
Osim dokumentacije u DDK-u, skup uključenih datoteka uključen je (* .cc) i knjižnične datoteke (* .lib).
Dakle, Windows podržava različite vrste uređaja upravljačkih programa, ali, osim toga, postoje upravljački programi koji nisu upravljački programi uređaja, ali jednostavno vam omogućuju stvaranje programa koji će raditi u sustavu Windows u načinu rada kernela, tj. Na razini povlastica. U isto vrijeme, oni u potpunosti pristupaju OS i opremi.
Razmotrite najjednostavniji upravljački program kernela.
#Include.
int concentry (
U pdriver_object pdriverobject,
U pusregisticstrypath) (
}
Ulazna točka je upravljački program, koji je uređen u obliku postupka koji hostira dva parametra:
pdreverobject - pokazivač na objekt samo stvorio upravljački program. Preuzimanjem upravljačkog programa, sustav stvara objekt vozača (objekt vozača), što predstavlja sliku vozača u memoriji. Kroz ovaj objekt sustav kontrolira vozača. Vozač je uobičajena struktura podataka sustava vozača_object.
pusregistrypath - pokazivač na ključ registra koji sadrži opcije inicijalizacije vozača.
Ovaj naš prvi vozač je samo učitan u sustav i odmah iskrcao.
Sada razmislite o programu predloška koji će se morati koristiti za razvoj programa u prvom koraku rada na tečaju (vozač beers.sys kernel mod).
Zadatak ovog vozača je izvršiti jednu bilješku o sustavu dinamički do prve oktave. Da biste to učinili, vozač koristi upute u i izvan procesora, pozivajući se na odgovarajuće I / O portove. Poznato je da je pristup I / O portovima sveti zaštićeni resurs Windows sustava. Pokušaj privlačenja bilo koje od njih, kako unos i izlaz, iz korisničkog načina, neizbježno dovodi do iznimke.
U našem primjeru, govornik će raditi (za to se koristi, posebno, port 61h, 0 i 1 bita, port 43h i 42h).
Na početku vozača definiran svih 12 bilješki.
Bit će potrebno jednostavno uključiti zvučnik, već da biste postavili frekvenciju zvuka. To koristi podsustav timera koji radi neovisno o procesoru i ima 3 kanala. Izlaz kanala 2 povezan je s zvučnikom, koji se koristi za generiranje zvuka različite frekvencije. Raspon zvuka sluha - 30Hz-6000Hz.
Za podešavanje frekvencije zvuka u port 43h (Timer Register) 0BH je poslana riječ:
movi al, 0bh
43h, Al
Ova vrijednost određuje broj kanala koji ćemo upravljati, tip rada, način kanala i formatu brojila.
Zatim se rekalkulirana frekvencija zvuka (1193167 / frekvencija (Hz)) šalje u priključak 42H (1193167 / frekvencija (Hz) (mlađi dio je prvi, zatim najstariji).
Na primjer, želimo dobiti zvučnu frekvenciju 100 Hz. Ponovno izračunati frekvenciju
1193167/100 = 11931
Zatim:
mOV AX, 11931
42h, al
movi al, ah
42h, al
U prvom koraku rada, morate promijeniti program tako da daje druge glazbene zvukove (svaki po opciji).
Često, u zadacima koje trebate postaviti različite trajanja. Da biste to učinili, prikladno je koristiti postupak do_delay, prolazeći ga posredno određenim parametrom "zvučnog vremena".
Da bi bilo prikladno za ispravljanje upravljačkog programa, postoje različita sredstva. Najjednostavnije je konačno s potrebnim informacijama u posebnom prozoru Uslužni program za ispravljanje pogrešaka. Prije toga, ovaj program je pokrenut, konfiguriran za presretanje poruka iz kernela. Za prikaz programa se naziva funkcija DBGPrinta, koja ima jedan parametar - izlaz niza. Nakon pokretanja upravljačkog programa u prozoru za prikaz pogrešaka, prikazuje se cijeli izlaz.
Postoje različiti načini za instalaciju vozača u kernel. Budući da naš vozač zapravo nije potreban, sustav nije potreban (ne vodi nikakav uređaj), a zatim ćemo privremeno povezati upravljački program na sustav, a zatim ga izbrisati.
Da biste to učinili, morate stvoriti aplikaciju koja će pokrenuti upravljački program. Kako? Vozač je usluga razine kernela. Stoga će aplikacija koristiti SCM - upravitelj kontrole usluge (upravitelj kontrole usluga), koji je uključen u Windows i radi na korisničkoj razini.
Dakle, potrebno je izgraditi rješenje iz dva projekta: primjena konzole i vozača.
Razviti upravljačke programe s vama potrebno je unaprijed:
- instrument DDK,
- Instalirajte varijablu okruženja Wtnetbase (vrijednost - put do DDK, na primjer, E: Winddk 3790.1830).
Projekt s vozačem mora biti tip makefile.
Napravite postavke projekta pomoću aplikacijskih postavki i u polje za izradu naredbenog retka za snimanje niza
ddkbuild -wnetxp chk. -CEZ.
Što izazov posebne skripte za komunikaciju vc s DDK
Trenutna mapa projekta mora sadržavati datoteke:
izvori, makefile, ddkbuild.cmd (skripta), izvor datoteka vozač.c
Nakon izgradnje projekta vozač mora imati produžetak. Sys.
Aplikacija pokreće vozač Beer.sys, tj. propisuje ga u registru i pokreće se na posao. Zatim, nakon završetka uklanja iz registra.
Za aplikaciju za pokretanje upravljačkog programa, nakon izgradnje rješenja koje se sastoji od dva projekta - aplikacije i upravljačke programe, morate postaviti datoteku izvršne aplikacije i upravljački program na jednu mapu, a zatim pokrenuti program.
Vozači su vrlo teško ispraviti. U slučaju pogrešaka u operaciji, operacija je najčešće zamrzavanje, a potrebna je ponovno pokretanje. A za naš vozač, nakon ponovnog pokretanja, također trebate izbrisati uslugu beapera06 iz registra pomoću Regedit (HKEY_LOCAL_Machine System CurrentOdovovodi Usluge), a zatim ponovno pokrenite sustav.
1.2 Windows Virtualni uređaji
Do sada smo razvili upravljački program kernela koji može učiniti ono što ne može biti na korisničkoj razini, posebno, za rad s / izlaznim portovima. Takav upravljački program naziva se upravljački program kernela, ali ne i upravljački program uređaja, jer se podaci između korisničkog programa i uređaja ne prenose (nakon svega, vozač je obično potreban? Za organiziranje razmjene podataka između aplikacije korisnika i uređaja).
Sada ćemo razviti upravljačke programe uređaja koji prenose podatke i natrag između korisničke aplikacije i uređaja.
Kada aplikacija zahtijeva operaciju / out, poziva vozač. Da biste to učinili, aplikacija može dati zahtjev za čitanje podataka s uređaja ili snimanja podataka na uređaj. A ako je potrebna neka druga radnja, na primjer, za to se koristi anketa ili kontrola uređaja ili nešto drugo, tzv. IOCTL sučelje (kontrola uređaja).
Smatrat ćemo ovaj slučaj za virtualne uređaje, jer najčešće, zašto vam je potreban virtualni uređaj u vozaču? Da biste ga mogli prenijeti podatke da vozač može nekako proces (kao što je nemoguće u aplikaciji) i vratiti rezultat na zahtjev. Sjetite se da je uobičajeni vozač kernela, ranije raspravljao, nije ništa poduzeo od prijave i nije ništa vratio tamo, ali jednostavno je učinio postupcima nedostupnim primjeni.
Kada aplikacija zahtijeva operaciju / out, poziva vozač. To se može koristiti takozvanim. IOCTL sučelje (kontrola uređaja).
Primjena poziva obavlja sljedeće radnje:
1) Otvaranje datoteke i primanje deskriptora:
Generic_read + generic_write, 0, , otvoreni_existing, 0, null
Kao rezultat toga, ako se sve dogodilo uspješno, dobivamo deskriptor uređaja.
2) Slanje pogonskog pogona valjanosti (što učiniti, vozač može provesti mnogo različitih radnji):
poziv DeviceOCocontrol, Deskriptor, Akcijski kod, ulazni međuspremnik adresa, ulaznu veličinu podataka, izlazni međuspremnik adresa, veličina izlaza, međuspremnik adresu za pravi broj bajtova
3) Zatvaranje datoteke i, prema tome, oslobađanje deskriptora.
prizivati \u200b\u200bopravdani deskriptor uređaja
Za prijenos podataka, moduli (aplikacija i upravljački program) trebali bi se dogovoriti o interakcijskom protokolu (akcijski kodovi, struktura pufera - ulaz i izlaz).
Isti akcijski kod se također koristi u aplikaciji, au vozaču.
Akcijski kod u aplikaciji i upravljački program može se snimiti u 16-strukom obrascu, a možete koristiti CTL_CODE makro, kao što je učinjeno u primjeru laboratorija. Radi u kabini common.inc.
Razmotrite primjer akcijskog koda s vozača virtualnog uređaja koji se koristi u laboratorijskom radu. Ime - ioctl_get.
U slučaju virtualnog uređaja, zastava datoteke je 0.
Vrsta uređaja - File_device_unknown \u003d 22h
Prava pristupa - File_read_access + file_write_access \u003d 1 + 2 \u003d 3 \u003d 11b
Funkcionalni kod - u rasponu od 800h do FFFH. Imamo 800h.
Metoda bipreciranja - Metoda prijenosa podataka između aplikacije i upravljačkog programa (tri):
Za malu količinu podataka obično se koristi metod_bufered (00b) - dodatni međuspremnik je označen u dovoljnoj memoriji, dovoljan za postavljanje ulaznog i izlaznog pufera. Adresa ovog međuspremnika nalazi se u IRP u polju Activerirp.systembuffer. Sam dispečer i / o preuzima rad prepisivanja podataka između korisnika i dodatnog međuspremnika.
Izravni pristup podacima (bez međuspremnika) - metod_out_direct (2) - za izlaz ili Metod_in_direct (1) - za unos; Polje od IRP - MDLaddress. Ovo je izravni poziv - / izlazni upravitelj ispravlja fizičke stranice koje sadrže korisnički međuspremnik. U isto vrijeme, stvara pomoćnu strukturu MDL (popis deskriptora memorije) za opisivanje fiksnih stranica. I vozač developer radi s MDL-om.
Pristup putem međuspremnika na razini korisnika - metoda_ne (3); Polje iz IRP - sistembuffer. I / OFF dispečer šalje virtualnu adresu korisničkog načina na vozača. A u vozaču morate raditi vrlo pažljivo, jer vozač u ovom slučaju trebao bi raditi samo u kontekstu pozivatelja.
Kada aplikacija šalje upravljački program za radnju, pokreće I / O Dispečer. Odgovoran je za generiranje paketa I / O upita (i / o zahtjev paketa, IRP) i šaljem ga vozaču za daljnju obradu.
Razmotrit ćemo 3 vrste zahtjeva:
Irp_mj_create - bit će prenesena s kreatirom,
IRP_MJ_DEVICE_CONTROL - bit će prenesen s DeviceOCocOntrol
IPr_mj_close - s blizu
IRP paket se sastoji od zaglavlja i / out mjesta za plasman. / Izlazni upravitelj stvara broj zračenja stanice koje su jednake broju upravljačkih programa uključenih u obradu zahtjeva. Svaki vozač dopušten je pristup vlastitoj staničnoj ćeliji. Kada vozač prenese IRP paket upravljačkog programa niže razine, pokazivač na stanicu se premješta u ćeliju potrebnu za ovaj upravljački program. I, naprotiv, nakon obrade upita, pokazivač se povećava na najvišoj razini pogonske stanice. Dobivanje pokazivača pomoću funkcije iogetcurrentstaclocation ().
U svakom smjerljivom stog postoji pokazivač na objekt DeviceObject i na filobject objekt za koji se pokreće upit. IRP paketi uvijek su pohranjeni u nepodnošljivoj memoriji.
Sljedeći objekti kreiraju se za rad vozača i primjenjuju se:
Objekt vozača;
Objekti uređaja;
Faze operacije vozača.
1) Stvaranje objekta vozača. Stvorene prilikom učitavanja vozača u početnoj fazi. U ovom trenutku, pokreće se Driverentry funkcija, a poljubac je popunjen, kao i pokazivač na objekt uređaja i leđa.
Uređaj uključuje:
Vrsta uređaja.
2) Stvaranje simboličke veze s uređajem. Da bi objekt "uređaja" bio dostupan korisničkom kodu, vozač mora stvoriti u korisničkom načinu dostupnog (korisnički način) imenik "?" Drugi objekt je simbolička veza (simbolička veza). Shablon.sys Driver stvara SLSHABLON simboličnu vezu na svom uređaju "Devshablon" u "??" direktoriju, čiji je vrijednost "uređaj Devshon".
Dakle, već pri umetanju vozača (u našem slučaju, na stupnju preuzimanja OS), imamo tri objekta u memoriji: vozač "vozač shablon", uređaj "uređaj" i simbolička veza s uređajem " * Slshablon ".
3) otvaranje. Nadalje, kada se započne prijava, zove se kreativni. Postoji link na uređaj. Iz strukture uređaja Device_Object, informacije se vraćaju informacije o servisnom pogonu. I / O Dispečer formira IRP I / O upit tipa IRP_MJ_Create i usmjerava ga za vožnju. Dakle, vozač uči da kod korisnika načina rada pokušava pristupiti svom uređaju. Ako vozač nema ništa protiv, onda vraća kod uspjeha. Naš vozač ima poseban postupak otpreme koji odgovara na ovu IRP - DispatchCreateclose (postoji kombinirani postupak za otvaranje i zatvaranje uređaja). U Io.Status.Status polje se prenosi statusom_success, te u io.status.information - 0, jer U ovom slučaju, ništa ne treba prenositi. Takav odgovor vozača je signal dispečera objekta za stvaranje virtualne datoteke. U isto vrijeme, novi predmet s pokazivačem na "datoteku" objekt je stvoren u tablici deskriptora (obračun tablicu), a novi deskriptor se vraća u korisnički način.
Ako je sve u redu, tada spasimo deskriptor datoteke, vratio CreateEFile, u varijabli HDEVICE.
4) operacije CAP-a. Sada imamo priliku upravljati rad ovog uređaja pozivanjem deviceocontrol funkcija. Budući da vozač uređaja može, u načelu, obaviti mnogo različitih zadataka, potrebno je nekako razlikovati zahtjeve. U tu svrhu, drugi parametar Dwiocontrolcode je namijenjen, nazvan I / O kontrolni kod kontrolnog koda (I / O kontrolni kod), koji je izgrađen prema određenim pravilima.
Korištenje deskriptora uređaja, I / O otpremnica će dobiti informacije o upravljačkom programu za servisiranje, formirat će se paket I / O upit tipa IRP_MJ_DEVICE_CONTROL i usmjerava ga za vožnju. Vozač će biti uzrokovan odgovarajućim postupkom dispečercontrola, koji se akcijski kod i informacije o adresama i veličini ulaznog i izlaznog pufera prenose kao parametri. Sve se to prenosi putem IRP-a. IRP postupak poduzima potrebne informacije: Akcijski kod, adresa međuspremnika podataka.
Postupak dispečercontrola obavlja potrebne radnje, u našem slučaju adresa IRP-a iz ESI registra zatim prenosi rezultat putem izlaznog pufera u aplikaciju.
Slično prethodnom postupku, proći kroz status raskida IRP-a i broj bajtova koji se prenose s vozača.
U aplikaciji su ti podaci formatirani i izlaz.
5) zatvaranje. Kao što bi se trebalo liječiti deskriptorima, koji više nisu potrebni, pozivaju funkciju bliske ruke, zatvarajući deskriptor uređaja.
6) Upravljanje vozača. Izbrišite simboličku vezu i izbrišite objekt uređaja.
Kompleks (2) sastoji se od dva programa:
Aplikacija koja se odnosi na vozača iza IRP adrese, a tada se ova adresa prikazuje Windows na standardni prozor.
Shablon.sys - Vozač.
Vozač shablona ne radi na korisničkoj razini, u ovom slučaju definira sadržaj ESI registra tijekom vozača.
Aplikacija u izlaznom puferu dobiva sadržaj ESI-a, pretvara ga na izlaz u heksadecimalni i prikazuje prozore u standardni prozor.
Ako trebate primati informacije od CMOS-a u upravljačkom programu, onda je potrebno:
Pošaljite u port 70h offset u CMOS-u koji nas zanima;
Nisko kašnjenje;
Uzmite iz informacija o 71h u Al.
Zatim napišite ove informacije u izlazni spremnik.
A u aplikaciji morate uzeti informacije iz izlaznog međuspremnika, ako je potrebno, pretvoriti ga i prikazati ili analizirati i, ovisno o rezultatu, prikazati potreban tekst u standardni prozor.
U ovom laboratoriju se pretpostavlja da je vozač stalno instaliran u sustavu Windows pomoću .inf datoteke pomoću stavke za instalaciju opreme s upravljačke ploče: Dodavanje novog uređaja, ručno instaliranje, prikazati sve uređaje, instalirati s diska, odaberite datoteka.inf (vozač mora biti u istoj mapi).
Da biste provjerili je li upravljački program postavljen, odaberite sustav, opremu, Upravitelj uređaja na upravljačkoj ploči.
1.3 Pristup postojećim upravljačkim programima iz aplikacija korisničkih režima
Algoritam primjene vozača koji radi s vozačem
Da biste radili s vozačevim vozačem, morate dobiti manipulator (ručka) upravljački program. Ovaj manipulator se može dobiti pomoću funkcije CreateEfile ili CreateFilea API koji radi s ASCII znakovima. Nadalje koristi funkciju directiocontrol API, koji se, kao jedan od parametara, IOCTL kôd se prenosi. IOCTL kôd je upravljački kôd s kojim će vozač naučiti o operaciji, čiji izvršenje traži zahtjev, način prijenosa parametara i prava pristupa koja je potrebna za obavljanje ove operacije. Nakon prouzročene primjene
DeviceIoControl Drive se šalje IRP_MJ_DEVICE_CONTROL. Nakon završetka obrade, zahtjev za prijavom vraća upravljanje i primjena ostaje analizirati odgovor vozača i zatvoriti otvorene deskriptore.
Primjer
U primjeru u nastavku, aplikacija za korisnički način šalje ioctl_disk_get_Partion_info_ex Query_Ex datotečni sustav upravljački program, analizira primljene informacije i prikazuje format particije tvrdog diska.
#Include.
#Include.
int _tmain (int argc, _tchar * Argv)
DWORD DWBYTESRETRED \u003d 0;
char CpartionStyle \u003d (0);
Particija_information_ex pilarticioninfo;
Rukovati HDEVICE \u003d CreateFilea (
/**/// "\\ t
/ * 2 * / generic_read | Generic_write
/ * 3 * / file_share_read | File_share_write,
/ * 5 * / Open_existing,
ako (HdEvice \u003d\u003d Invalid_handle_Value)
Messageboxa (, "CreateFilea Error!", Pogreška ", 0);
ako (DeviceOcontrol (
/ * 1 * / (ručka) HDEVICE,
/ * 5 * / & & PIPARTITINFO,
/ * 6 * / sise (PICARTITINFO),
/ * 7 * / & DWbyteSreurand,
ako (pproarticioninfo.partionsyle \u003d\u003d particioniranje_style_mbr)
MessageBoxa (, "particija_style_mbr", "Opis", 0);
inače ako (PIPARTICINFO.PARTITIONTYLE \u003d\u003d particioniranje_style_GPT)
Messageboxa (, "Partition_style_GPT", "Opis", 0);
Messageboxa (, "particija_style_Raw", "Opis", 0);
Messageboxa (, "DeviceOControl Error", "Pogreška", 0);
Blizu (HdEvice);
Stavite primjer
Najavljene su varijable potrebne za prijavu. Particija_information_ex je struktura koja opisuje informacije o odjeljku tvrdog diska.
pITSEF struktura (
) Particioniranje_information_ex;
U ovom dijelu programa, funkcija CreateFilea je pozvana na primanje manipulatora, koji je napisan na varijable HDEVICE.
DeviceOconlol funkcija se sinkrono naziva. Prenosi se:
deskriptor uređaj;
Ioctl kod ioctl_disk_get_partion_info_ex;
pokazivač na ulazni pufer, ništavan u našem slučaju;
veličina ulaznog pufera;
indeks na izlaznom puferu;
veličina izlazne pufere;
pokazivač na varijablu DWORD-a u kojoj će se pohraniti broj vraćenih bajtova;
pokazivač na preklapanoj strukturi, koja se koristi za asinkroni poziv.
Nakon vraćanja kontrole, u slučaju uspješnog završetka funkcije, u strukturi particija_information_ex, odjeljak je pohranjen.
Izrađuje se analiza i izlaz. Prije vraćanja upravljanja operativnim sustavom možete zatvoriti otvorene deskriptore. To vam omogućuje da napravite značajku bliska (__ u ručku). Ako deskriptori ne zatvaraju, to će učiniti operativni sustav za vas.
2. Izvođenje tečajeva
2.1 Korak 1.
Zadatak: 1. Razviti upravljački program kernela s pristupom portovima, obavljanje radnji u skladu s opcijom i izlaznim informacijama u prozor za prikaz pogrešaka (opcija), kao i aplikaciju koja pokreće vozača.
Popis Kurs_test.cpp.
#Include "stdafx.h"
#Include "Windows.h"
#include "stdlib.h"
Sc_handle hsscmanager;
Sc_handle hservice;
char acdriverpath;
ako (hscmanager! \u003d 0) (
// Registracija igrača u ScManagerovom stolu dispečera
ako (hservice! \u003d 0) (
// Brisanje zapisa vozača
Deleteservice (hservice);
Objavljeno: hservice);
povratak 0;
}
Popis Beeper.sys
#Include.
#Define timera_frequency 1193167 // 1,193,167 Hz
#Define Pitch_c 523 // 523,25 Hz
#Define Pitch_cs 554 // 554,37 Hz
#Define Pitch_d 587 // 587,33 Hz
#Define Pitch_ds 622 // 622,25 Hz
#Define Pitch_e 659 // 659,25 Hz
#Define Pitch_f 698 // 698,46 Hz
#Define Pitch_fs 740 // 739,99 Hz
#Define Pitch_g 784 // 783,99 Hz
#Define Pitch_gs 831 // 830,61 Hz
#Define Pitch_a 880 // 880.00 Hz
#Define Pitch_as 988 // 987,77 Hz
void do_delay (int vrijeme) (
long i, J;
za (i \u003d 0;<=time*0xfffff; i++) {}
}
void do_big_delay (int vrijeme) (
Do_delay (2 * vrijeme);
}
praznini ksilofon (int npitch) (
int ntone \u003d timer_frequeny / npitch
_Az (
mov al, 10110110b; // snimanje kontrolne riječi u 43h
oUT 43H, AL; // Zvučni upravljački kanal - LOGIC dijagram pomoću tonskog timera i softverskih kontroliranih portova sustava
mOV EAX, Ntone; // ponovno izračunati frekvencijsko snimanje u 42
42h, Al; // Senior
movi al, ah; // junior
42h, al
u al, 61h; // mijenja kontrolnu sekvencu - transformacija posljednjih bitova po jedinici
// bit 0 - dozvola za uporabu zvučnika
; // bit 1 - Vremenski raspored veze - 2 do zvučnika
ili al, 00000011B; Zvučnika.
out 61h, al
}
Do_delay (0x7f);
_Az (
u al, 61h
i al, 11111100b; Zvučnik isključen.
out 61h, al
}
}
Ksilofon (pitch_c);
Ksilofon (pitch_s);
Ksilofon (pitch_s);
Ksilofon (pitch_s);
Ksilofon (pitch_s);
Ksilofon (pitch_s);
Ksilofon (pitch_s);
vraćanje status_device_configuration_error;
}
2.2 Korak 2.
Razviti virtualni upravljački program koji vam omogućuje obavljanje radnji dostupnih samo na nultoj razini povlastica (u skladu s opcijom), a zatim prijenos rezultata na aplikaciju na 3 razine povlastile za prikaz na zaslonu.
Aplikacija prikazuje rezultat u standardnom prozoru sustava Windows.
Popis shablon.c.
#Include. // razne NT definicije
#Include.
Unicode_string g_usdevicename;
Unicode_string g_ussimbolikLinkNime;
void mativenload (u pdriver_object pdrinverobject) (
Iodeletesymboliclink (& g_ussimboliclinkLame);
Iodeletedevice (pdreverobject-\u003e Dealobject);
}
NTSTATUS DispatchCreateclose (pdevice_object PdevićeBjeb, PIRP PIRP) (// MJ_create obradu mJ_Close
pirp-\u003e iostatus.status \u003d status_success;
pirp-\u003e iostatus.information \u003d 0;
Iocopletequest (PIRP, io_no_increment);
vraćanje status_success;
}
NTSTATUS dispečercontrol (pdevice_object pdevićeb, PIRP PIRP) (// Obrada IRP_MJ_DEVICONTROL
Status NTSTATUS;
int regesi;
// uzeti pokazivač na io_stack_location, u njemu na iokontrolcode
ako (PIRP-\u003e rep.Overlay.currentStaclocation-\u003e parametri.devićeiocontrol.iocontrolcode \u003d\u003d iOctl_get) (
// usporedite kod akcije i ako je naš klijent, onda:
_Az (
movi eax, 0
movi al, 10h
70h, al
u al, 71h
cBW.
cwde.
mov Regesi, Eax
}
// ovo je naša funkcionalnost - preuzimamo sadržaj ESI registra
// napišite ga u međuspremnik sustava
* ((int *) pirp-\u003e Actentiterp.systemBuffer) \u003d Regesi;
pirp-\u003e iostatus.information \u003d 4; // i postavite veličinu rezultata
status \u003d status_success;
) Ostali status \u003d status_invalid_device_request;
pirp-\u003e iostatus.status \u003d status;
Iocopletequest (PIRP, io_no_increment);
povratak (status);
}
iNT Drivery (u pdriver_object pdreverobject, u rusricode_string pusregistrypath) (
Status NTSTATUS;
Pdevice_object pdevićebjekt;
// inicijalizirati Unicode retke
RTLINITUNICODENTING (& G_USDEVICENAME, l "Uređaj \\ t
Rtnilicitodestring (& g_ussimboliklinkme, l "\\ tl?
// popunite objekt vozača - razumljivo objasniti vozača koji značajku koje procese
pdriverobject-\u003e matizernload \u003d
pdreverobject-\u003e majorfunkcija \u003d
pdreverobject-\u003e majorfunkcija \u003d
pdreverobject-\u003e majorfunkcija \u003d
// stvoriti logičan objekt virtualnog uređaja
Status \u003d icrobjedevevice (pdreverobject, 0, & g_usdevicename, file_device_unknown, 0, lažni i pdevićebsc);
ako (! Nt_success (status)) (status povrata;)
// stvoriti simboličku vezu s uređajem
Status \u003d icreatesymbolicLink (& g_ussimboliclinkLame, & g_usdevicename);
ako (! Nt_success (status)) (
Iodeletedevice (pdevicebject);
status povratka;
}
status povratka;
}
Popis tečaj2.cpp
#Include "stdafx.h"
#Include "Windows.h"
#include "stdlib.h"
#Define ioctl_get ctl_code (file_devica_unknown, 0x800, metod_bufered, file_read_access + file_write_access)
int _tmain (int argc, _tchar * arguv) (
Rukovati HDEVICE;
Bool devcontrol;
DWORD DWBEDETURNER;
char troka;
/*
Parametri:
lPFilename Adresa niza null-score koji definira ime objekta da biste ga stvorili ili otvorili.
dwdesired takva robe za objekt. Ovaj parametar može uzeti bilo koju kombinaciju sljedećih vrijednosti:
Značenje: Opis:
0 definira zahtjev za dostupnost objekta na navedenom uređaju. Aplikacija može zatražiti atribute uređaja, bez pristupa.
Generic_read definira pristup čitanju s objekta. Podaci se mogu čitati iz datoteke i pokazivač datoteka može se premjestiti. Kombinirajte s Generic_Write za pristup čitanju.
Generic_Write definira pristup objektu. Podaci se mogu zabilježiti u datoteci i pokazivač datoteka može se premjestiti. Kombinirajte s Generic_read za pristup čitanju.
dwsharemode način zajedničkog pristupa objektu. Uz nulte vrijednosti, objekt se ne može koristiti s nekoliko programa. Sve naknadne operativne operacije objekta neće uspjeti dok se ne zatvori opis objekta. Za dijeljenje objekta koristite kombinaciju sljedećih vrijednosti:
Značenje: Opis:
File_Share_delete omogućuje redoslijed otvorenih operacija objekta kako biste zatražili pristup za uklanjanje.
File_Share_read omogućuje redoslijed operacija otvaranja kako bi zatražio pristup za čitanje.
File_share_write omogućuje redoslijed operacija otvaranja kako bi zatražio unos
lPSECATTRTTRIBTRIBUTIRAJU ADRESU strukture sigurnosti_attributa, koji određuje je li deskriptor vraćen funkcijom da se nasljeđuje od strane dječjeg procesa.
Ako je LPSecurittibutes jednak nulu, deskriptor se ne može naslijediti.
dwcreationDission
Značenje: Opis:
Stvoriti_Allways stvara novu datoteku, uvijek.
Ako datoteka postoji, funkcija prepisuje datoteku.
Stvori_New stvara novu datoteku. Funkcija će biti dovršena s pogreškom ako datoteka postoji.
Open_Allways Otvori datoteku, uvijek. Ako datoteka ne postoji, funkcija je stvara na isti način, ako bi dwcreationDission bio stvoriti_new.
Open_existing otvara datoteku. Funkcija će biti dovršena pogreškom ako datoteka ne postoji.
Truncate_existing otvara datoteku i reže na nultu veličinu. Funkcija će biti dovršena pogreškom ako datoteka ne postoji.
dWFlagsanDattributes zastavice i atributi datoteka.
Kada se otvara postojeća datoteka, CreateFile ignorira datoteku predloška.
Vrijednosti povrata:
Ako je funkcija uspješna, vraća se otvorena ručka navedene datoteke. Ako navedena datoteka postoji prije pozivanja funkcije i parametar DWcreationDission je jednak stvoriti_Always ili Open_Allways, GetLasterRor poziv će vratiti Error_already_exists, čak i ako je funkcija uspješna. Ako datoteka ne postoji prije poziva, GetLastterror će se vratiti 0 (nula).
U slučaju pogreške, funkcija će se vratiti invalid_handle_value. Za više informacija o pogrešci, nazovite getlasttorror.
*/
ako (HdEvice! \u003d 0) (
/*
hDEVICE je ručka, izgrađena CreateEfile "Ohm.
dwiocontrolcode je vrijednost koja određuje neproziran koji se mora izvršiti.
lPINBUFFER je ljepljivi bouffer, koji se daje podacima potrebnim za obavljanje operacije navedene u Dwiocontrolcodeu. Ako oparacija ne nadmašuje podatke, možete premjestiti null.
ninbuferize je PAZMP u bajtovima podataka u buketu, koji LPINBuffer navodi na kojem.
lpoutbuffer je ljepljivac bouffer, koji će biti oslobođen proizvodnje kada je zapanjen uspješno unaprijed. Ako opration ne navedite izlaz, ovo polje treba biti null "y.
nOUTBUFERSIZ je PAZPP u kantajskoj bajtovima, što je lpoutbuffer ukazuje na to.
lpbyteSreturned - ADPE tipa pedigree DWORD, koji će dobiti podatke o podacima uključenim u Lpoutbuffer.
lpoverapped je preklapanja stripp, ako želite da operacija bude asinchon. Ako želite pričekati dok se OP izvršava, stavite Null u ovom polju.
*/
wsprintf ((lpstr) stroka, "% x", adwoutbuffer); // zapisani niz u puferu (AdWoutbuffer -\u003e Stroka)
Blizu (HdEvice);
povratak 0;
}
računalni program vozača
2.3 Korak 3.
Unosan tečaj.cpp
#Include.
#Include.
#Include.
{
DWORD bezvrijedan;
0, // Atributi datoteka
povratak (false);
}
0, // Veličina ulaznog pufera
Blizu (HdEvice);
povratak (brusulti);
}
int main (int argc, char * argum)
{
/*
pITSEF struktura (
Particioniranje_style particioniste; // format odjeljka
Uspostava velikih_integera; // premještanje početnog dijela
Duljina particija velike_integera; // odjeljak veličine
DWORD particionizam; // Broj odjeljka
Boolean rewritepartion; // Ako se dio prepisuje istinit
unija (
Particija_information_mrb MBR; // Dodatne informacije MBR stilu
Particioniranje_information_gpt GPT; // Dodatne informacije GPT stil particije
};
) Particioniranje_information_ex;
*/
Bool Bresult;
sustav ("pause");
povratak ((int) bresulti);
}
2.4 Korak 4.
1) Kombinirajte sva funkcionalnost dizajnirana u koracima od 1-3, u jednom programu kompleks.
Konačni kompleks bi trebao izgledati ovako:
- Naš upravljački program ugrađen je u sustav i učitava se na stupanj pokretanja sustava Windows.
- Aplikacija zatraži upravljački program za upravljački program (naveden u koraku 2), upravljački program prenosi te informacije, a zvučnik se također nastavlja na neko vrijeme i reproducira se melodija (navedeno u koraku 1). Zatim zahtjev zahtijeva vozača postojeći u sustavu (u skladu s mogućnošću 3. koraka).
2) Napravite obavijesti o objašnjenju u kojem se moraju opisati sva 4 faza, kao i teorijske informacije za svaku fazu.
#Include "stdafx.h"
#Include "Windows.h"
#include "stdlib.h"
#Define ioctl_get ctl_code (file_devica_unknown, 0x800, metod_bufered, file_read_access + file_write_access)
Bool GetpartionNumber (particija_information_Ex * PEX)
{
Rukovati HDEVICE; // deskriptor uređaja koji se provjerava
Bool Bresult; // potvrdni okvir
DWORD bezvrijedan;
hDEVICE \u003d Createfile (tekst ("\\\\\\\\. C:"), // Otvoreni uređaj
Generic_read | Generic_Write, // Pristup uređaju
File_share_read | file_share_write, // mod dijeljenja
Null, // sigurnosne atribute prema zadanim postavkama
Open_existing, // Mjesto
0, // Atributi datoteka
Null); // ne kopirajte atribute datoteka
ako (HDEVICE \u003d\u003d Invalid_Handle_Value) (// Nije moguće otvoriti uređaj
printf ("CreateEfile () nije uspio!");
povratak (false);
}
bRESULT \u003d DeviceIOCONTROL (HDEVICE, // Traženi uređaj
Ioctl_disk_get_partion_info_ex, // operacija
Null, // pokazivač na ulazni spremnik
0, // Veličina ulaznog pufera
pex, sisef (* PEX), // izlazni pufer
& Junk, // Broj vraćenih bajtova
(Lpoverlapped) null); // I / O sinkronizacija (I / O)
Blizu (HdEvice);
povratak (brusulti);
}
int _tmain (int argc, _tchar * arguv) (
Sc_handle hsscmanager;
Sc_handle hservice;
char acdriverpath;
Rukovati HDEVICE;
Bool devcontrol;
DWORD DWBEDETURNER;
Lpvoid adwinbuffer, adwoutbuffer;
char troka;
Particioniranje_information_ex; // struktura uređaja
Bool Bresult;
hDEVICE \u003d CreateFile ("\\ tl SlDevget", generic_read + generic_write, 0, , open_existing, 0, null);
ako (HdEvice! \u003d 0) (
Devcontrol \u003d develoiocontrol (HDEVICE, IOCTL_GET, & Adwinbuffer, Veličina (Adwinbuffer), & AdWoutbuffer, Veličina (adwoutbuffer), & DWBYTeSreured, null);
ako ((devcontrol! \u003d 0) && (dwbyteSrenut! \u003d 0)) (
wsprintf ((lpstr) stroka, "% x", adwoutbuffer); // zapisani niz u puferu (AdWoutbuffer -\u003e Stroka)
ako (stroka \u003d\u003d "00000100") poruka (NULL, "pronađeno 1,44 MB", "Yermakov FDD SHENER", MB_OK);
i drugo poručni okvir (, "nije pronađen", "SHENER" YERMAKOV FDD ", MB_OK);
hscmanager \u003d openscmanager (, , sc_manager_create_service);
ako (hscmanager! \u003d 0) (
GetfullPathName ("Beeper.sys", veličinu acdriverpath, acdriverpath, null);
// Registracija glazbenika u SCM tablicama
hSRVICE \u003d CreaService (HSCManager, "Beerpe11", "Lijepa melodija Beer11",
Usluga_start + brisanje, servis_kernel_driver, servis_demand_start,
Usluga_error_ignore, acdriverpath, , , , , null);
ako (hservice! \u003d 0) (
StartService (hservice, 0, null);
Deleteservice (hservice);
Objavljeno: hservice);
) Ostalo poruka (, "može" T vozač ", , mb_iconstop);
BLADIŠĆENJE (HSCManager);
) Ostalo poruka (, "može se" može povezati s ScManager ", , mb_iconstop);
) Ostalo poruka (, "može" t poslati kontrolni kod ", , mb_ok);
Blizu (HdEvice);
) Ostalo poruka (, "dev nije prisutan", , mb_iconstop);
bRESULT \u003d GetpartionNumber (& Pex);
ako (BRESULT) (Printf ("particioninbumber \u003d% d", Pex.PartionNUNMumber);
) Drugo (Printf ("GetpartionNumber () nije uspio. Pogreška% d.", GetLasterRor ());)
sustav ("pause");
povratak ((int) bresulti);
}
3. Prijava za posao
Slika 3.1. Vozač od koraka 2
Slika 3.2. Korak 3 Vozač
Objavljeno na Allbest.ru.
Slične dokumente
Mehanizmi za interakciju načina rada kernela i korisničke aplikacije: arhitektura višeslojnog pogona, algoritam koji skriva podatke, interakciju upravljačkog programa i aplikacije, korisničko sučelje za pristup datotekama datotekama.
rad na tečaju, dodano 06/23/2009
Windows NT i / o arhitektura. Interna organizacija USB autobusa. Bitne karakteristike modela DDM pogona. Bodovi za prijavu razvijenog vozača, postavljanje koda u memoriju, ugradnja vozača u sustav. Provedba upravljačkog koda u C.
tečaj, dodano 09/27/2014
Struktura korisničkog načina pruža mogućnost korištenja korisnika za interakciju s sustavom. Opis načina rada kernela, koji osigurava sigurnu izvršenje aplikacija (programa) korisnika. Windows NT hardverski apstrakcija.
prezentacija, dodano 23.10.2013
Windows 98 kernel. Uloga 16-bitnih kernelskih modula. Problemi s performansama. Zadruga i zamjena višezadaćnosti. Poboljšana uporaba resursa u sustavu Windows 98. Korištenje WordART-a. MS Outlook Express: Stvaranje i slanje poruka.
ispit, dodano 14.04.2005
Zajedničko funkcioniranje svih računalnih uređaja i pristup svojim resursima. Koncept i funkcija operativnog sustava Windows Graphics. Windows pomoć za pomoć. Upravljanje datotečnim sustavom. Tehnologija "utikač i igra". Windows grafičko sučelje.
ispitni rad, dodano 01/22/2011
Karakteristike operativnog sustava. Povijest razvoja sustava Windows. Usporedna verzija verzija sustava Windows. Elementi i alati za Windows XP. Programi aplikacija u sustavu Windows XP. Radna površina i prijenosna računala radi sustava Windows.
izvješće, dodano 10/16/2011
Korištenje upravljačkog programa upravljačkog programa kernela i kontrole za izradu niti sustava. Imitacija obrade podataka i organizaciju kašnjenja. Razviti upravljački program u c ++. Konfiguracija testne klupe. Točnost promjene kašnjenja i tajmera.
naravno, dodao je 24.06.2009
Domilízhenna unutarnja Windows struktura sustava Windows. Arhitektura NT struktura. Metode obnove funkija na režimu kernela režima Korištenje. Podcjenjivati \u200b\u200bupravljački program. Ulazni villod paketa. Otca STAB_LNOSTI TU AUBES Windows sustavi.
tečaj, dodano 02.01.2014
Koncept, vrste i rad vatrozida. Ugrađeni Windows vatrozid. Windows XP SP2, pristup postavkama vatrozida za Windows XP. 2. Windows Vista, dopušten promet. Windows 7, postavke za aktivne profile. Osobni vatrozid, razine testa.
sažetak, dodano 11/19/2010
Poznavanje s tehničkim karakteristikama osobnog računala. Instaliranje operacijskog sustava i upravljačkih programa Windows 7. Windows XP Professional SP3 Metode čišćenja. Metode za vraćanje operativnog sustava. Izrada Microsoft Office 2010.
Microsoft u operacijskom sustavu Windows 10 posvećuje veliku pozornost sigurnosti. Jedan od važnih elemenata sustava je "Windows Defender", ali je u stanju nositi se s svim prijetnjama. Konkretno, nedavno dobiva posebnu prevalenciju ransomware virusa, od kojih su najpoznatije reinkarnacije petya zlonamjerni programi i. Microsoft je implementiran u sustavu Windows 10 Izolaciju i integritet memorije i integritet memorije koji su usmjereni na borbu protiv ranzozne viruse. Prema zadanim postavkama onemogućene su.
Sadržaj:Što je jezgra izolacija i integritet memorije
Izolaciju jezgre - To je dodatni proces zaštite, koji se daje metodom mačevanja računalnih procesa iz operativnog sustava i uređaja. Zbog tih postupaka moguće je izbjegavati potkopavanje operacijskog sustava kada virusi na računalu pogodi.
Integritet memorije - To je istodobna izolacija jezgre zaštitne funkcije, koja je usmjerena na ograničavanje pristupa nepoznatih potencijalno opasnih programa na proizvode na visokoj razini.
Važno: Funkcija izolacije kernela može raditi samo ako postoje dovoljni uvjeti za to na dijelu računalnog hardvera. U postavkama BIOS-a, tehnologija virtualizacije trebala bi biti aktivna, na štetu od kojih Windows 10 računalo može pokrenuti razne aplikacije u virtualnom spremniku, ograničavajući pristup s ključnim komponentama sustava.
Kako omogućiti izolaciju kernela i integritet memorije
Parametri operacijskih sustava Windows 10 omogućuju vam upravljanje sigurnosnim značajkama na računalu u potpunosti. Kroz postavke sustava Windows 10 možete omogućiti izolaciju kernela i integritet memorije na sljedeći način:
Kao što je gore navedeno, ako hardverska komponenta računala ne podržava mogućnost virtualizacije, ova funkcija neće raditi. Kada uključite korisnika će vidjeti poruku u donjem desnom kutu. "Nije moguće osigurati integritet memorije. Moguća nekompatibilnost. " Ako se pojavi ova poruka, preporuča se ići na BIOS i vidjeti je li značajka sigurnog pokretanja omogućena (način rada podizanja).
Kako onemogućiti izolaciju kernela i integritet memorije
Nove značajke u operativnom sustavu koji ozbiljno utječu na njegov rad, uvijek riskiraju da postane uzrok problema pri radu. Nema iznimke i funkcije izolacije kernela. Korisnici koji su već pokušali, slaviti na Microsoftovim forumima, koji su suočeni s problemima kada pokreću brojne igre i programe. Jedini način rješavanja ovog problema je onemogućiti funkciju izolacije kernela i integritet memorije. Možda u budućim ažuriranjima, programeri aplikacija ili Microsoft će ispraviti ovu nekompatibilnost.
Postoje 3 načina za isključivanje izolacije kernela i integritet memorije:
Power Manager Dispečer (Power Manager) Oko se ne spušta od korištenja električne energije u cijelom sustavu. Povijesno gledano, upravljanje potrošnjom energije sastojalo se od isključivanja monitora i zaustavljanja rotacije pogona. No, ovaj problem brzo postaje sve teže - zbog uvjeta za povećanje u trajanju prijenosnih računala iz baterija, kao i razmatranja uštede energije na stolnim računalima (koji su dopušteni trajno uključeni) i visokim troškovima električnom energijom koja se konzumira poslužitelj farme.
Novi alati za upravljanje energijom uključuju smanjenje potrošnje energije po komponentama kada se sustav ne koristi, za to se pojedinačni uređaji prebacuju na stanje backup ili čak potpuno isključeni (koristeći prekidač napajanja). Višeprocesorski sustavi Onemogućite pojedinačne procesore kada nisu potrebni, pa čak i može smanjiti frekvenciju procesora (za smanjenje potrošnje energije). Kada je procesor neaktivan, potrošnja energije se također smanjuje, jer ne treba ništa učiniti osim očekivanja pojave prekida.
Windows podržava poseban način isključivanja koji se zove hibernacija (hibernacija), u kojoj se cijela fizička memorija kopira na disk, a zatim se potrošnja energije svede na minimum (u sustavu hibernacije prijenosna računala mogu raditi tjednima), dok je baterija naplaćuje se minimalno. Budući da je cijeli status memorije snimljen na disku, možete čak zamijeniti laptop bateriju (dok je u stanju hibernacije). Kada sustav nastavlja svoj rad, ostavljajući hibernaciju, vraća spremljeno stanje memorije (i ponovno inicijalizira uređaje). To donosi računalo u istu državu u kojoj je bio ispred hibernacije (bez potrebe za registracijom i pokretanjem svih aplikacija i usluga koje su izvršene. Windows pokušava optimizirati ovaj proces, ignoriranje nemodificiranih stranica (koji imaju zalidnošću diska) i komprimira stranice za mirovinu kako bi se smanjio potreban I / O algoritam. Algoritam hibernacije osigurava automatsku propusnost i / o and procesorskog sustava. Dakle, s višim propusnim pojasom procesora, smanjite potrebu za I / O sustav propusnosti, koristi se više resursa-intenzivan, ali učinkovitije koristi. kompresija podataka. Dovoljna propusnost I / O sustava omogućuje izbjegavanje kompresije pri prebacivanju na stanje hibernacije. Kada koristite posljednje generacije višeprocessori, ulaz u stanje hibernacije i izlaz iz njega može biti samo nekoliko sekundi, čak i ako operativni može biti Sustavi imaju veliki volumen.
Hibernacija alternativa - stanje pripravnosti, u kojem upravitelj snage prevodi cijeli sustav na najniže stanje potrošnje energije (točno se toliko energije koristi po potrebi za regeneriranje dinamičkog statusa memorije). Budući da memorija ne mora biti kopirana na disk, tada se prijelaz na to stanje na nekim sustavima provodi brže od hibernacije.
Unatoč dostupnosti hibernacije i očekivanja, mnogi se korisnici nisu dobili osloboditi navike okretanja svog osobnog računala na kraju posla.
Hibernacija se koristi u sustavu Windows za provedbu pseudo-drhtava početka, nazvanog Hiberboot, koji se provodi mnogo brže od uobičajenog isključivanja i lansiranja. Kada korisnik daje sustav za isključivanje, Hiberboot prikazuje korisnika iz sustava, a zatim ga prevede u stanje hibernacije u toj točki s kojom će se moći ponovno prijaviti. Kasnije, kada se korisnik ponovno uključi sustav, Hiberboot će nastaviti rad sustava s ulazne točke korisnika. Za korisnika sve to izgleda kao vrlo brzo gašenje, budući da se većina koraka inicijalizacije sustava preskoči. Naravno, ponekad sustav mora biti isključen uistinu kako bi se uklonili problemi ili postavili ažuriranje kernela. Ako sustav primi naredbu za ponovno pokretanje, a ne na isključivanju, ona prenosi ovaj gašenje i obavlja uobičajeno opterećenje.
Očekuje se da će računalni uređaji na telefonima i tabletama, kao i na novim generacijama prijenosnih računala, uvijek konzumirati malu količinu električne energije. Kako bi se osigurao takav način rada, u suvremenim prozorima implementirao je posebnu verziju upravljanja napajanjem, koja se zove CS (priključen pripravno stanje - čekanje na način povezivanja). CS je moguć na sustavima s posebnom opremom za povezivanje mreže sposoban za praćenje prometa u malom skupu veza, koristeći mnogo manje energije nego kada je središnji procesor operativan. Ispostavilo se da je CS sustav uvijek omogućen, izlaz iz CS se provodi odmah čim se korisnik uključi na zaslon. Čekanje u načinu rada se razlikuje od uobičajenog stanja čekanja, jer će CS sustav također izaći iz očekivanja kada prima paket od nadzirane veze. Nakon što baterija počinje sjesti, CS sustav ulazi u stanje hibernacije kako bi se izbjeglo punjenje baterije i mogući gubitak korisničkih podataka.
Postizanje rada baterije zahtijeva ne samo tako često s procesora. Također je važno što je duže moguće zadržati procesor u stanju izvan nje. CS sustav mreže opreme omogućuje procesorima da ostanu isključeni prije primitka podataka, ali zapošljavanje procesora može biti uzrokovano drugim događajima. NT-temeljeni Windows uređaji upravljačke programe, sustavne usluge i same aplikacije često se pokreću bez posebnog razloga, samo za provjeru statusa slučajeva. Takva aktivnost istraživanja obično se temelji na postavkama timera za povremeni početni kod u sustavu ili aplikaciji. Anketa na temelju timera signala može napraviti zadatak u događajima, uključujući procesor. Kako biste to izbjegli u suvremenim prozorima od takvih vremena, morate odrediti parametar pogreške koji omogućuje operacijskom sustavu da kombinira događaje timera i smanji broj pojedinačnih baza za uključivanje procesora. Windows je također sastavljen uvjeti pod kojima aplikacija koja nije u fazi aktivnog izvršenja može izvesti kod u pozadini. Operacije kao što su provjera ažuriranja ili osvježavajućeg sadržaja ne mogu se izvesti samo na početku isteka timera. Zahtjev mora slušati operativni sustav u pitanjima takve osnovne aktivnosti. Na primjer, provjera ažuriranja trebaju se pojaviti samo jednom dnevno ili sljedeći put kada će se baterija pojaviti na uređaju. Skup sustava posrednika pruža različite uvjete koji se mogu koristiti za ograničavanje pozadinske aktivnosti. Ako pozadinsko zadatak zahtijeva pristup jeftinoj mreži ili prilagođenim ovlastima, posrednici neće izvršiti zadatak dok se ne pojave potrebni uvjeti.
Danas se mnoge primjene provode i s lokalnim kodom i uslugama u oblaku. Windows pruža uslugu obavijesti sustava Windows (usluga obavijesti sustava Windows (WNS), omogućujući usluge treće strane da push obavijesti na Windows uređaju u CS-u bez potrebe za CS mrežnom opremom posebno slušaju pakete od poslužitelja trećih strana. WNS obavijesti mogu obavijestiti vremenski kritične događaje, kao što je tekstualna poruka ili VoIP poziv. Kada je primljeni WNS paket, procesor će se morati uključiti za obradu, ali CS mrežna oprema ima sposobnost razlikovanja između prometa različitih veza, što znači da procesor ne bi trebao biti uključen kao odgovor na svaki proizvoljni paket dolaze s mrežnog sučelja.