Instaliranje upravljačkog programa za filter sistem datoteka. Upravljački programi filtera sistema datoteka. Kako instalirati besplatni Avast antivirus

Driver filtera koji zauzima viši nivo u hijerarhiji od upravljačkog programa sistem datoteka, zvao drajver filtera sistema datoteka(drajver filtera sistema datoteka). (Za upravljačke programe filtera, pogledajte Poglavlje 9.) Njegova sposobnost da vidi sve zahtjeve prema sistemu datoteka i da ih modificira ili izvrši po potrebi omogućava kreiranje aplikacija kao što su usluge replikacije izbrisane datoteke, šifriranje fajlova, backup i licenciranje. B bilo koja reklama antivirusni skener, koji provjerava datoteke u hodu, uključuje drajver sistema datoteka koji presreće IRP pakete sa IRP_MJ_CREATE komandama koje se izdaju svaki put kada aplikacija otvori datoteku. Prije prosljeđivanja takvog IRP-a upravljačkom programu sistema datoteka kojem je ova komanda upućena, antivirusni skener provjerava da li datoteka koja se otvara ima virusa. Ako je datoteka čista, skener virusa prosljeđuje IRP niz lanac, ali ako je datoteka zaražena, skener poziva svoj servisni proces da ukloni ili dezinficira datoteku. Ako se datoteka ne može dezinficirati, upravljački program filtera odbija IRP (obično s greškom „pristup odbijen“) tako da se virus ne može aktivirati.

U ovom odeljku ćemo opisati rad dva specifična drajvera filtera sistema datoteka: Filemon i System Restore. Filemon je uslužni program za praćenje aktivnosti sistema datoteka (sa web stranice wwwsystntemals.com), korišćen u mnogim eksperimentima u ovoj knjizi, je primer drajvera pasivnog filtera koji ne menja IRP tok između aplikacija i drajvera sistema datoteka. Oporavak sistema, funkcionalnost uvedena u Windows XP, koristi upravljački program filtera sistema datoteka za praćenje promjena ključa sistemske datoteke i kreira njihove rezervne kopije tako da se ove datoteke mogu vratiti u stanje koje su imale kada su kreirane tačke vraćanja.


NAPOMENA Windows XP servisni paket 2 i Windows Server 2003. uključio Filesystem Filter Manager (\Windows\System32\Drivers\Fltmgr. sys) kao dio port-miniport modela za drajvere filtera sistema datoteka. Ova komponenta će takođe biti dostupna za Windows 2000. Filesystem Filter Manager dramatično pojednostavljuje razvoj drajvera filtera obezbeđujući interfejs drajvera filtera za miniport za Windows I/O podsistem, kao i podršku uslugama za upite imena datoteka, povezivanje sa volumenima i interakciju sa ostali filteri. Razvojne kompanije, uključujući uključujući Microsoft, će napisati nove filtere sistema datoteka na osnovu infrastrukture koju pruža Filesystem Filter Manager i migrirati postojeće filtere na njega.

Windows Filesystem Filter Manager ili Windows File System Filter Manager je proces koji se instalira sa ekstenzijom sistemske datoteke fltmgr.sys. Ovaj proces je ključna komponenta vašeg Windows operativnog sistema i ne bi trebalo da bude prekinut, niti da se dozvoli pokretanje svaki put kada se Windows učita tokom pokretanja. Datoteka ima glavnu odgovornost da osigura da sve datoteke koje će biti instalirane na računar budu uskladištene u njihovim pravim direktorijumima. Ako ovaj fajl nedostaje ili je oštećen, najverovatnije će se pojaviti Plavi ekran smrti; kako to doživljavaju korisnici. U drugim slučajevima, Windows se neće učitati u potpunosti. Samo ponovno pokretanje ne rješava problem ako datoteka zaista nedostaje ili se ne može pronaći pri pokretanju. Greška će se pojavljivati ​​sve dok se problem ne riješi. Datoteka fltmgr.sys koja je kompatibilna sa Windows XP ili Windows 7 ima približnu veličinu od 124.800 bajtova. Datoteka je pohranjena u sistemskom direktoriju vašeg operativnog sistema.

Kako mogu da zaustavim fltmgr.sys i da li treba?

Većina nesistemskih procesa koji su pokrenuti može se zaustaviti jer nisu uključeni u pokretanje vašeg operativnog sistema. fltmgr.sys. koristi Microsoft Windows Ako se isključiš fltmgr.sys, vjerovatno će ponovo početi kasnije bilo nakon što ponovo pokrenete računar ili nakon pokretanja aplikacije. Za zaustavljanje fltmgr.sys, morate trajno deinstalirati aplikaciju koja pokreće ovaj proces što u ovom slučaju jeste Microsoft Windows, iz vašeg sistema.

Nakon što deinstalirate aplikacije, dobra je ideja da skenirate svoj Windows registrator za bilo kakve preostale tragove aplikacija. Registry Reviver od ReviverSoft je odličan alat za ovo.

Je li ovo virus ili neki drugi sigurnosni problem?

ReviverSoft Sigurnosna presuda

Pregledajte fltmgr.sys i pošaljite mi obavještenje kada bude
je pregledan.

Šta je proces i kako oni utiču na moj računar?

Proces je obično dio instalirane aplikacije kao npr Microsoft Windows, ili vaš operativni sistem koji je odgovoran za rad u funkcijama te aplikacije. Neke aplikacije zahtijevaju da procesi rade cijelo vrijeme kako bi mogli raditi stvari kao što su provjeravanje ažuriranja ili vas obavijestiti kada dobijete trenutnu poruku. Neke loše napisane aplikacije imaju mnogo procesa koji se pokreću koji možda nisu potrebni i zauzimaju vrijednu procesorsku snagu u vašem računalu.

Da li je poznato da je fltmgr.sys loš za performanse mog računara?

Nismo primili nikakvu pritužbu da ovaj proces ima veći uticaj od normalnog na performanse računara. Ako ste imali loša iskustva s njim, javite nam u komentaru ispod i mi ćemo to dalje istražiti.

I bez čekanja na nastavak koji ste obećali How, odlučio sam da sam instaliram ovaj antivirusni program na svoj kućni računar, ali sam se suočio sa nejasnoćama. Preuzmite program za instalaciju sa službene web stranice www.avast.com/ru, a zatim ga instalirajte na kućni računar ovaj program, ali ispostavilo se da još uvijek treba biti registriran. Bavio sam se ovim, sad ne mogu da shvatim podešavanja. Konkretno, zanima me Sandbox ili Sandbox funkcija, mnogi ljudi sada pričaju o tome, ovo je neka vrsta virtuelnog okruženja u kojem možete pokrenuti bilo koje sumnjiv program, bez straha od zaraze cijelog sistema ako se nešto dogodi. Dakle, to je u postavkama, ali ne razumijem da li radi ili ne. I još uvijek ne mogu pronaći jednu ovakvu korisna funkcija, poput skeniranja prilikom pokretanja, kažu da je ovo vrlo dobar lijek protiv banera ransomware-a i ako je omogućen, Avast skenira datoteke za pokretanje prije nego što se sam Windows pokrene. Bio bih zahvalan na bilo kakvoj pomoći. Maxim.

Kako instalirati besplatni Avast antivirus

Ovaj članak je napisan kao nastavak članka Koji je antivirus najbolji, gdje smo ispitali pitanje na kojem principu gotovo svi antivirusni proizvodi, plaćeni i besplatni, grade svoju zaštitu. Po čemu se razlikuju jedni od drugih, kao i mnogo više, na primjer, kako najbolje izgraditi zaštitu za sebe kućni računar od virusa i koje programe osim antivirusa koristiti za to. Ovdje ćemo razmotriti pitanje kako preuzeti i instalirati besplatni antivirus Avast. Proći ćemo preko osnovnih postavki programa, njegovog održavanja, skeniranja virusa i tako dalje.

Napomena: Prijatelji, ako iz nekog razloga želite da uklonite Avast antivirusni program, koristite. Dobra recenzija plaćeni i besplatni antivirusi čekaju vas u našem članku ""

Uglavnom štiteći naše antivirusni program Avast je izgrađen na veoma moćnoj Resident Protection. To se dešava uz pomoć jedinstvenih ekrana. Drugim riječima, programski moduli su stalno prisutni u RAM-u i prate sve što se dešava na računaru.
Na primjer, ekran sistema datoteka je glavno sredstvo zaštite i prati sve operacije koje se dešavaju s vašim datotekama. Vatrozid - kontroliše mrežnu aktivnost i zaustavlja viruse koji pokušavaju da prođu kroz Internet. Ekran pošte - prati emailom i naravno provjerava sva pisma koja dolaze na vaš računar. Avast program takođe ima prilično naprednu heurističku analizu, efikasnu protiv rutkita.

Evo besplatnog antivirusa za vas!

Prije instalacije AVAST! Besplatni antivirusni program , treba da znate da ga možete koristiti samo kod kuće. Antivirus možete preuzeti na web stranici www.avast.com/en. Ako imate problema sa preuzimanjem Avast antivirusa, preuzmite ga sa zvanične stranice distributera Avsofta na:

www.avsoft.ru/avast/Free_Avast_home_edition_download.htm
Pa, naš antivirus ćemo preuzeti na službenoj web stranici
www.avast.com/ru-ru/free-antivirus-download. Odaberite Free Antivirus i kliknite na preuzimanje,

u prozoru Dobrodošli korisnicima Avast Free Antivirusa koji se pojavi, kliknite na dugme Preuzmi odmah.

Preuzmite i pokrenite instalater programa. Od sedme verzije postoji izbor između normalne instalacije i instalacije kao drugog antivirusa. Ako imate instaliran Kaspersky kao svoj prvi antivirus, moguć je konflikt.

Možete odabrati ekspresnu instalaciju.

Ako ti treba Google pretraživač Chrome, označite polje. Instalacija se odvija u roku od jedne do dvije minute.
Instalacija je završena. Kliknite spreman.

Mnogi ljudi, kada se jednom u glavnom prozoru programa, čude tome AVAST antivirus treba se registrovati, ali zaista jeste. Registracija je vrlo jednostavna. Kliknite na registraciju.

Odaberite AVAST Basic Protection! Besplatni antivirusni program.

Ispunite vrlo jednostavan formular. Kliknite na registraciju za besplatnu licencu.

Naša verzija antivirusa je registrirana na poštansko sanduče stići će slično pismo.

Odmah nam nude da privremeno pređemo na verziju Internet Security na 20 dana, nakon ovog perioda, ako želimo, možemo se vratiti besplatno ili kupite verziju Internet Security. Da biste imali sa čime uporediti, prvo koristite verziju AVAST-a! Besplatan antivirus, možete nadograditi na plaćenu verziju u bilo kojem trenutku. Kliknite na krstić u gornjem desnom uglu i zatvorite ovaj prozor.

Nakon 365 dana morat ćete se ponovo registrovati i to je to. Kao što vidite, preuzimanje i instaliranje besplatnog Avast antivirusa u principu nije teško, niti ga je teško registrovati.

Može se reći da je sve vrlo zgodno i razumljivo čak i početnik može razumjeti sve kontrole. Sada prijatelji, pažnja, program je po defaultu vrlo dobro konfigurisan, ali postoje neke postavke vrijedne vaše pažnje. Avast se ažurira automatski, obično odmah nakon uključivanja računara i pokretanja operativnog sistema.



Ako želite, možete provjeriti ima li ažuriranja na službenoj web stranici u bilo kojem trenutku. Odaberite Program za ažuriranje održavanja. Također možete ažurirati modul za skeniranje i otkrivanje virusa.

Postoji nekoliko načina za skeniranje vašeg računara na viruse. Kliknite na dugme Skeniraj računar. I odaberite opciju koja vam je potrebna, na primjer
Ekspresno skeniranje- objekti pokretanja i sva područja particije operativnog sistema na kojima se virusi obično gnijezde biće skenirani.
Potpuno skeniranje računara(bez komentara)
Skeniranje prenosivih medija- skenira vaše fleš diskove, USB čvrste diskove itd.
Odaberite folder za skeniranje, samostalno birate fasciklu za skeniranje na viruse.

Ili možete kliknuti desnim tasterom miša na bilo koju fasciklu i izabrati Skeniraj iz padajućeg menija i ova fascikla će biti skenirana na viruse.

Skenirajte pri pokretanju OS-a. Ako, na primjer, morate dugo surfovati Internetom, možete omogućiti skeniranje datoteka za pokretanje unaprijed i sljedeći put kada pokrenete sistem. Avast će provjeriti sve datoteke vezane za normalno pokretanje sistema, zaobilazeći sam Windows, nisam primijetio takvu funkciju nigdje osim Avasta. Vrlo dobar lijek koji pomaže protiv ransomware banera, iako ne u 100% slučajeva.

Avast antivirusni prozor prije glavnog pokretanja Windowsa.

Automatski sandbox (" AutoSandbox"). Pokreće sumnjive aplikacije u virtuelnom okruženju, prirodno odvojenom od normalnog sistema. U našem sa vama besplatna verzija AVAST! Besplatan antivirus, pokrenut će se samo one aplikacije koje Avast smatra sumnjivim, ako se pokaže da je program zlonamjeran, prozor programa će se jednostavno zatvoriti. U plaćenim verzijama AVAST-a! Pro Antivirus i AVAST! Internet Security, možete sami pokrenuti bilo koju aplikaciju u ovom okruženju, kako želite.

Blokiranje određenih web lokacija na osnovu njihove adrese. Ovu funkciju možete koristiti kao alat za roditeljsku kontrolu.

Sve ostalo je dostupno u izlogu Ekrani uživo i prozor Postavke. Možemo reći da bi prosječan korisnik trebao biti zadovoljan zadanim postavkama, ako nešto nije jasno, napišite.


Ponekad filtermanager.dll i druge sistemske greške DLL greške može biti povezano s problemima u Windows registru. Nekoliko programa može koristiti datoteku filtermanager.dll, ali kada se ti programi deinstaliraju ili modificiraju, ponekad zaostaju "napušteni" (nevažeći) unosi DLL registra.

U osnovi, to znači da iako se stvarna putanja datoteke možda promijenila, njena pogrešna prijašnja lokacija je i dalje zabilježena u Windows Registry. Kada Windows pokuša da pronađe ove netačne reference datoteka (lokacije datoteka na vašem računaru), može doći do greške filtermanager.dll. Osim toga, infekcija zlonamjernim softverom može oštetiti unose u registru povezane s aplikacijom Third-Party Application. Stoga je potrebno popraviti ove oštećene DLL stavke registra da bi se riješio problem u korijenu.

Ručno uređivanje Windows registra radi uklanjanja nevažećih ključeva filtermanager.dll se ne preporučuje osim ako ste stručnjak za PC servis. Greške napravljene prilikom uređivanja registra mogu dovesti do neispravnosti vašeg računara i uzrokovati nepopravljivu štetu vašem operativni sistem. Zapravo, čak i jedan zarez stavljen na pogrešno mjesto može spriječiti pokretanje vašeg računara!

Zbog ovog rizika, toplo preporučujemo korištenje pouzdanog čistača registra kao što je WinThruster (razvijen od strane Microsoft Gold Certified Partner) za skeniranje i popravak svih problema s registrom povezanim s filtermanager.dll. Koristeći čistač registra, možete automatizirati proces pronalaženja oštećenih unosa registra, referenci datoteka koje nedostaju (poput one koja uzrokuje grešku filtermanager.dll) i neispravnih veza unutar registra. Prije svakog skeniranja automatski se kreira sigurnosna kopija koja vam omogućava da poništite sve promjene jednim klikom i štiti vas od mogućeg oštećenja vašeg računala. Najbolji dio je to što eliminacija grešaka u registru može dramatično poboljšati brzinu i performanse sistema.


Upozorenje: Osim ako niste iskusan korisnik računara, NE preporučujemo ručno uređivanje Windows registra. Neispravno korištenje Registry Editora može uzrokovati ozbiljne probleme i zahtijevati Reinstalacija Windowsa. Ne jamčimo da će problemi proizaći iz zloupotreba Registry Editor se može eliminirati. Koristite Registry Editor na vlastitu odgovornost.

Prije ručnog vraćanja Windows registar, morate kreirati sigurnosnu kopiju izvozom dijela registra povezanog s filtermanager.dll (na primjer, aplikacija treće strane):

  1. Kliknite na dugme Počni.
  2. unesite " komanda" V traka za pretragu... NE KLIKNI JOŠ ENTER!
  3. Dok držite pritisnute tipke CTRL-Shift na tastaturi pritisnite ENTER.
  4. Prikazaće se dijaloški okvir za pristup.
  5. Kliknite Da.
  6. Crna kutija se otvara treptavim kursorom.
  7. unesite " regedit" i pritisnite ENTER.
  8. U uređivaču registra odaberite ključ vezan za filtermanager.dll (npr. Third-Party Application) za koji želite napraviti sigurnosnu kopiju.
  9. Na meniju File izaberite Izvoz.
  10. Na listi Sačuvaj u Odaberite fasciklu u koju želite da sačuvate rezervnu kopiju ključa aplikacije treće strane.
  11. Na terenu Ime datoteke Unesite naziv datoteke sigurnosne kopije, na primjer "Rezervna kopija aplikacije treće strane".
  12. Pobrinite se za polje Opseg izvoza odabrana vrijednost Odabrana grana.
  13. Kliknite Sačuvaj.
  14. Fajl će biti sačuvan sa ekstenzijom .reg.
  15. Sada imate sigurnosnu kopiju vašeg unosa u registru koji se odnosi na filtermanager.dll.

Sljedeći koraci za ručno uređivanje registra neće biti opisani u ovom članku, jer će vjerovatno oštetiti vaš sistem. Ako želite više informacija o ručnom uređivanju registra, pogledajte donje veze.

<= IRP_MJ_MAXIMUM_FUNCTION; ++i) { DriverObject->MajorFunction[i] = FsFilterDispatchPassThrough;

) DriverObject->

// // Globalni podaci FAST_IO_DISPATCH g_fastIoDispatch = ( sizeof(FAST_IO_DISPATCH), FsFilterFastIoCheckIfPossible, ...); // // DriverEntry - Ulazna tačka drajvera NTSTATUS DriverEntry(__inout PDRIVER_OBJECT DriverObject, __in PUNICODE_STRING RegistryPath) ( ... // // Postavi tabelu otpreme brze io. // DriverObject->

Podešavanje rutine uklanjanja drajvera

< numDevices; ++i) { FsFilterDetachFromDevice(devList[i]); ObDereferenceObject(devList[i]); } KeDelayExecutionThread(KernelMode, FALSE, &interval); } }

// // DriverEntry - Ulazna tačka drajvera NTSTATUS DriverEntry(__inout PDRIVER_OBJECT DriverObject, __in PUNICODE_STRING RegistryPath) ( ... // // Podešavanje rutine za uklanjanje drajvera (samo u svrhu otklanjanja grešaka). // DriverObject->

IrpDispatch.c

Dispečerski prolaz

// // PassThrough IRP Handler NTSTATUS FsFilterDispatchPassThrough(__in PDEVICE_OBJECT DeviceObject, __in PIRP Irp) ( PFSFILTER_DEVICE_EXTENSION pDevExt = (PFSFILTER_DEVICE_EXTENSION-DeurLock) (Irp return IoCall Driver(pDevExt->);

Dispatch create

// // IRP_MJ_CREATE IRP rukovalac NTSTATUS FsFilterDispatchCreate(__in PDEVICE_OBJECT DeviceObject, __in PIRP Irp) ( PFILE_OBJECT pFileObject = IoGetCurrentIrpStackLocation(Irp)->"FilePrintObject"->"FileObject"

FastIo.c

// Makro za testiranje da li je FAST_IO_DISPATCH rutina za rukovanje ispravna #define VALID_FAST_IO_DISPATCH_HANDLER(_FastIoDispatchPtr, _FieldName) \ (((_FastIoDispatchPtr) != NULL) && \o (((spatch)FastI >Spatch >Fast ( FIELD_OFFSET(FAST_IO_DISPATCH, _Ime polja) + sizeof(void *))) && \ ((_FastIoDispatchPtr)->_Ime polja != NULL))

Brzi I/O prolaz

BOOLEAN FsFilterFastIoQueryBasicInfo(__in PFILE_OBJECT FileObject, __in BOOLEAN Sačekajte, __out PFILE_BASIC_INFORMATION Buffer, __out PIO_STATUS_BLOCK IoStatus, __in PFILE_OBJECT FileObject, __in BOOLEAN Sačekajte, __out PFILE_BASIC_INFORMATION Buffer, __out PIO_STATUS_BLOCK IoStatus, __in PDEVICE //st EVICE_OBJECT nextDeviceObject = ( (PFSFILTER_DEVICE_EXTENSION) DeviceObject- >DeviceExtension)->AttachedToDeviceObject(PFAST_IO_DISPATCH) fastIoDispatch = nextDeviceObject->DriverObject ->FastIoDispatch if (VALID_FAST_IO_DISPATCH_HANDLER(fastIoDispatch, FastIoDispatch-BastIoDispatch);

Brzi I/O uređaj za odvajanje

Notification.c

AttachDetach.c

Pričvršćivanje

Odvajanje

// // Razno BOOLEAN FsFilterIsMyDeviceObject(__in PDEVICE_OBJECT DeviceObject) ( return DeviceObject->

Izvori i makefile

Sadržaj izvorne datoteke:

Makefile je standardan:

SC.EXE pregled

Sc start FsFilter

Zaustavite drajver sistema datoteka

Sc stop FsFilter

Sc izbrišite FsFilter

Rezultirajuća skripta

Postajemo napredniji

Zaključak

U našem tutorijalu pružili smo vam jednostavne korake za kreiranje drajvera filtera sistema datoteka. Pokazali smo kako da instalirate, pokrenete, zaustavite i deinstalirate drajver filter sistema datoteka koristeći komandnu liniju. Diskutovano je i o drugim problemima drajvera filtera sistema datoteka. Razmotrili smo stog uređaja sistema datoteka sa priloženim filterima i razgovarali o tome kako pratiti izlaz za otklanjanje grešaka iz drajvera. Možete koristiti resurse u ovom članku kao kostur za razvoj sopstvenog drajvera za filter sistem datoteka i modifikovati njegovo ponašanje u skladu sa vašim potrebe.

Reference

  1. Sadržaj za programere sistema datoteka ili filtera sistema datoteka
  2. sfilter DDK uzorak

Nadamo se da ste uživali u našem vodiču za razvoj Windows drajvera. Spremni ste da unajmite iskusan tim za rad na vašem projektu kao što je razvoj drajvera filtera sistema datoteka? Samo nas kontaktirajte i mi ćemo vam dati sve detalje!

Ovaj vodič vam pruža lako razumljive korake za razvoj jednostavnog drajvera filtera sistema datoteka. Demo drajver koji vam pokazujemo kako da kreirate štampa imena otvorenih datoteka za otklanjanje grešaka na izlazu.

Ovaj članak je napisan za inženjere sa osnovnim iskustvom u razvoju Windows drajvera uređaja, kao i poznavanjem C/C++. Osim toga, mogao bi biti koristan i za ljude bez dubokog razumijevanja razvoja Windows drajvera.

Napisao:
Sergej Podobriy,
Vođa vozačkog tima

Šta je upravljački program za filter sistema datoteka Windows?

Upravljački program za filter sistema datoteka Windows poziva se tokom svake I/O operacije sistema datoteka (kreiranje, čitanje, pisanje, preimenovanje, itd.). Stoga je u mogućnosti da modificira ponašanje sistema datoteka. Upravljački programi filtera sistema datoteka su uporedivi sa starijim drajverima, iako zahtevaju nekoliko posebnih razvojnih koraka. Sigurnosni, sigurnosni, snimci i antivirusni softver koriste takve drajvere.

Razvijanje drajvera filtera jednostavnog sistema datoteka

Prije početka razvoja

Prvo, da biste razvili drajver za filter sistema datoteka, potreban vam je IFS ili WDK komplet sa Microsoft veb lokacije. Takođe morate postaviti varijablu okruženja %WINDDK% na putanju na kojoj ste instalirali WDK/IFS komplet.

pažnja:Čak i najmanja greška u drajveru sistema datoteka može uzrokovati BSOD ili nestabilnost sistema.

Main.c

Unos drajvera filtera sistema datoteka

To je pristupna tačka za bilo koji drajver, uključujući i drajver filtera sistema datoteka. Prva stvar koju bismo trebali učiniti je pohraniti DriverObject kao globalnu varijablu (koristit ćemo je kasnije):

// // Globalni podaci PDRIVER_OBJECT g_fsFilterDriverObject = NULL; // // DriverEntry - Ulazna tačka drajvera NTSTATUS DriverEntry(__inout PDRIVER_OBJECT DriverObject, __in PUNICODE_STRING RegistryPath) ( NTSTATUS status = STATUS_SUCCESS; ULONG i = 0; //ASSERT(FALSE); // Ovo će se prekinuti na debu / Čuvajte naš objekat drajvera // g_fsFilterDriverObject = DriverObject.

Postavljanje IRP dispečerske tablice

Sljedeći korak u razvoju drajvera filtera sistema datoteka je popunjavanje tablice IRP otpreme sa pokazivačima funkcija na IRP rukovaoce. Imat ćemo generički prolazni IRP rukovalac u našem upravljačkom programu filera koji dalje šalje zahtjeve. Također će nam trebati rukovalac za IRP_MJ_CREATE da dohvati imena otvorenih datoteka. Kasnije ćemo razmotriti implementaciju IRP rukovatelja.

// // DriverEntry - Ulazna točka drajvera NTSTATUS DriverEntry(__inout PDRIVER_OBJECT DriverObject, __in PUNICODE_STRING RegistryPath) ( ... // // Inicijalizirati tablicu otpreme pogonskog objekta. // for (i = 0; i<= IRP_MJ_MAXIMUM_FUNCTION; ++i) { DriverObject->MajorFunction[i] = FsFilterDispatchPassThrough;

) DriverObject->MajorFunction = FsFilterDispatchCreate;

...)

Postavljanje brze I/O dispečerske tablice

Upravljački program filtera sistema datoteka zahtijeva brzu I/O dispečersku tablicu. Nepodešavanje ove tabele bi dovelo do pada sistema. Brzi I/O je drugačiji način za pokretanje I/O operacija koje su brže od IRP. Brze I/O operacije su uvijek sinhrone. Ako rukovalac brzim I/O vrati FALSE, tada ne možemo koristiti brzi I/O. u ovom slučaju, IRP će biti kreiran.

// // Globalni podaci FAST_IO_DISPATCH g_fastIoDispatch = ( sizeof(FAST_IO_DISPATCH), FsFilterFastIoCheckIfPossible, ...); // // DriverEntry - Ulazna tačka drajvera NTSTATUS DriverEntry(__inout PDRIVER_OBJECT DriverObject, __in PUNICODE_STRING RegistryPath) ( ... // // Postavi brzu tabelu otpreme. // DriverObject->FastIoDispatch = &g_fastIoDispatch;

// // DriverEntry - Ulazna točka drajvera NTSTATUS DriverEntry(__inout PDRIVER_OBJECT DriverObject, __in PUNICODE_STRING RegistryPath) ( ... // // Registrirana rutina povratnog poziva za promjene datotečnog sistema. // status = IoRegisterFsRegistrationChange F(DriverObjectNo ifDriverObject); (!NT_SUCCESS(status)) (povratni status; ) ... )

Podešavanje rutine uklanjanja drajvera

Završni dio inicijalizacije drajvera sistema datoteka je postavljanje rutine za izbacivanje. Ova rutina će vam pomoći da učitate i skinete upravljački program filtera sistema datoteka bez potrebe za ponovnim pokretanjem. Ipak, ovaj drajver zaista postaje neučitav samo u svrhu otklanjanja grešaka, jer je nemoguće bezbedno učitati filtere sistema datoteka. Ne preporučuje se da se vrši istovar u proizvodnom kodu.

// // DriverEntry - Ulazna tačka drajvera NTSTATUS DriverEntry(__inout PDRIVER_OBJECT DriverObject, __in PUNICODE_STRING RegistryPath) ( ... // // Podešavanje rutine za uklanjanje drajvera (samo u svrhu otklanjanja grešaka). // DriverObject->DriverUnload = FsFilterUn STATUS_SUCCESS;

Implementacija uklanjanja drajvera sistema datoteka

Rutina za istovar upravljačkog programa čisti resurse i oslobađa ih. Sljedeći korak u razvoju drajvera sistema datoteka je poništavanje registracije obavještenja o promjenama sistema datoteka.

// // Unload rutina VOID FsFilterUnload(__in PDRIVER_OBJECT DriverObject) ( ... // // Neregistrirana rutina povratnog poziva za promjene sistema datoteka. // IoUnregisterFsRegistrationChange(DriverObject, FsFilterNotificationCallback); ... )

Nakon što poništite registraciju obavještenja, trebali biste pregledati kreirane uređaje i odvojiti ih i ukloniti. Zatim pričekajte pet sekundi dok se ne završe svi preostali IRP-ovi. Imajte na umu da je ovo rješenje samo za otklanjanje grešaka. Djeluje u većem broju slučajeva, ali nema garancije da će uspjeti u svim.

// // Učitaj rutinu VOID FsFilterUnload(__in PDRIVER_OBJECT DriverObject) ( ... za (;;) ( IoEnumerateDeviceObjectList(DriverObject, devList, sizeof(devList), &numDevices); if (0 == numDevices) (breakDevice;) min(broj uređaja, RTL_NUMBER_OF(devList) za (i = 0; i< numDevices; ++i) { FsFilterDetachFromDevice(devList[i]); ObDereferenceObject(devList[i]); } KeDelayExecutionThread(KernelMode, FALSE, &interval); } }

// // DriverEntry - Ulazna tačka drajvera NTSTATUS DriverEntry(__inout PDRIVER_OBJECT DriverObject, __in PUNICODE_STRING RegistryPath) ( ... // // Podešavanje rutine za uklanjanje drajvera (samo u svrhu otklanjanja grešaka). // DriverObject->

Dispečerski prolaz

Jedina odgovornost ovog IRP rukovaoca je da proslijedi zahtjeve sljedećem vozaču. Sljedeći pogonski objekat je pohranjen u ekstenziji našeg uređaja.

// // PassThrough IRP Handler NTSTATUS FsFilterDispatchPassThrough(__in PDEVICE_OBJECT DeviceObject, __in PIRP Irp) ( PFSFILTER_DEVICE_EXTENSION pDevExt = (PFSFILTER_DEVICE_EXTENSION-DeurLock) (Irp return IoCall Driver(pDevExt->AttachedToDeviceObject, Irp);

Dispatch create

Svaka operacija kreiranja datoteke poziva ovaj IRP rukovalac. Nakon što zgrabimo ime datoteke iz PFILE_OBJECT, ispisujemo ga u izlaz za otklanjanje grešaka. Nakon toga pozivamo rukovatelj prolazom koji smo opisali gore. Primijetite da valjano ime datoteke postoji u PFILE_OBJECT samo dok se operacija kreiranja datoteke ne završi! Postoje i relativna otvaranja kao i otvaranja po id-u. U trećem- strana, možete pronaći više detalja o preuzimanju imena datoteka u tim slučajevima.

// // IRP_MJ_CREATE IRP rukovalac NTSTATUS FsFilterDispatchCreate(__in PDEVICE_OBJECT DeviceObject, __in PIRP Irp) ( PFILE_OBJECT pFileObject = IoGetCurrentIrpStackLocation(Irp)->FilepObject(Irp DbglePrintObject)->"FilepObject;", vrati DispatchPassThrough(DeviceObject, Irp);

// // IRP_MJ_CREATE IRP rukovalac NTSTATUS FsFilterDispatchCreate(__in PDEVICE_OBJECT DeviceObject, __in PIRP Irp) ( PFILE_OBJECT pFileObject = IoGetCurrentIrpStackLocation(Irp)->"FilePrintObject"->"FileObject"

Budući da osnovni sistem datoteka ne treba implementirati sve brze I/O rutine, moramo testirati valjanost tabele otpreme brzog I/O-a za sljedeći upravljački program koristeći sljedeći makro:

FastIo.c

Brzi I/O prolaz

Za razliku od IRP zahtjeva, prolazak kroz zahtjeve za brzi IO zahtijeva ogromnu količinu koda jer svaka brza I/O funkcija ima svoj vlastiti skup parametara. Ispod možete pronaći primjer uobičajene funkcije prolaza:

BOOLEAN FsFilterFastIoQueryBasicInfo(__in PFILE_OBJECT FileObject, __in BOOLEAN Sačekajte, __out PFILE_BASIC_INFORMATION Buffer, __out PIO_STATUS_BLOCK IoStatus, __in PFILE_OBJECT FileObject, __in BOOLEAN Sačekajte, __out PFILE_BASIC_INFORMATION Buffer, __out PIO_STATUS_BLOCK IoStatus, __in PDEVICE //st EVICE_OBJECT nextDeviceObject = ( (PFSFILTER_DEVICE_EXTENSION) DeviceObject- >DeviceExtension)->AttachedToDeviceObject(PFAST_IO_DISPATCH) fastIoDispatch = nextDeviceObject->DriverObject ->FastIoDispatch if (VALID_FAST_IO_DISPATCH_HANDLER(fastIoDispatch,FastIoDispaIu)(FastIoDispatch) BasicInfo)(File Object, Wait, Buffer, IoStatus, nextDeviceObject) return FALSE ; )

Brzi I/O uređaj za odvajanje

Detach device je specifičan brzi I/O zahtjev koji bismo trebali obraditi bez pozivanja sljedećeg drajvera. Trebali bismo izbrisati naš filterski uređaj nakon što ga odvojimo od steka uređaja sistema datoteka. Ispod možete pronaći primjer koda koji pokazuje kako lako upravljati ovim zahtjevom:

VOID FsFilterFastIoDetachDevice(__in PDEVICE_OBJECT SourceDevice, __in PDEVICE_OBJECT TargetDevice) ( // // Odvoji se od objekta volume uređaja datotečnog sistema. // IoDetachDevice(TargetDevice); IoDeleteDevice(SourceDevice); )

Brzi I/O uređaj za odvajanje

zajednički sistem datoteka sastoji se od kontrolnih uređaja i uređaja za volumen. Volumeni uređaji su priključeni na stog uređaja za pohranu. Kontrolni uređaj se registruje kao sistem datoteka.

Povratni poziv se poziva za sve aktivne sisteme datoteka svaki put kada se sistem datoteka registruje ili odjavi kao aktivan. Ovo je odlično mjesto za priključivanje ili odvajanje našeg filterskog uređaja sistema datoteka. Kada se sistem datoteka sam aktivira, pripajamo se njegovom kontrolnom uređaju (ako već nije priključen) i nabrajamo njegove volumetrijske uređaje i pripajamo im se također. Dok deaktiviramo sistem datoteka, ispitujemo njegov stog kontrolnih uređaja, pronalazimo naš uređaj i odvajamo ga. Odvajanje sa uređaja volumena sistema datoteka izvodi se u rutini FsFilterFastIoDetachDevice koju smo ranije opisali.

// // Ova rutina se poziva kad god se sistem datoteka ili registrira ili // odjavi kao aktivni sistem datoteka. VOID FsFilterNotificationCallback(__in PDEVICE_OBJECT DeviceObject, __in BOOLEAN FsActive) ( // // Rukovanje pričvršćivanjem/odvajanjem iz datog sistema datoteka. // if (FsActive) ( FsFilterAttachToFileSystemDevice(DeviceObjectFystemDeviceFromDeviceFrom); . ) )

Notification.c

Ova datoteka sadrži pomoćne rutine za pričvršćivanje, odvajanje i provjeru da li je naš filter već priključen.

Pričvršćivanje

Da bismo se priključili, moramo pozvati IoCreateDevice da kreiramo novi objekat uređaja sa ekstenzijom uređaja, a zatim propagirati zastavice objekta uređaja sa objekta uređaja kojem pokušavamo da se priključimo (DO_BUFFERED_IO, DO_DIRECT_IO, FILE_DEVICE_SECURE_OPEN). Zatim pozivamo IoAttachDeviceToDeviceStackSafe u petlji sa kašnjenjem u slučaju kvara. Naš zahtjev za prilaganje može propasti ako objekt uređaja nije završio inicijalizaciju. Ovo se može dogoditi ako pokušamo montirati filter samo za volumen. Nakon pričvršćivanja, pohranjujemo objekt „priložen na“ uređaj u ekstenziju uređaja i brišemo oznaku DO_DEVICE_INITIALIZING. Ispod možete vidjeti ekstenziju uređaja:

// // Strukture typedef struct _FSFILTER_DEVICE_EXTENSION ( PDEVICE_OBJECT AttachedToDeviceObject; ) FSFILTER_DEVICE_EXTENSION, *PFSFILTER_DEVICE_EXTENSION;

Odvajanje

Odvajanje je prilično jednostavno. Iz ekstenzije uređaja dobijamo uređaj na koji smo pripojili i zatim pozivamo IoDetachDevice i IoDeleteDevice.

void FsFilterDetachFromDevice(__in PDEVICE_OBJECT DeviceObject) ( PFSFILTER_DEVICE_EXTENSION pDevExt = (PFSFILTER_DEVICE_EXTENSION) DeviceObject->DeviceExtension; IoDetachDevice(pDevjectExt->DetteObjectedTo)DeviceObjectDevice->Atele);

Provjeravamo da li je naš uređaj priključen

Da bismo provjerili jesmo li povezani s uređajem ili ne, moramo iterirati kroz stog uređaja koristeći IoGetAttachedDeviceReference i IoGetLowerDeviceObject, a zatim tamo potražiti naš uređaj. Možemo identifikovati naš uređaj upoređujući objekat drajvera uređaja sa objektom našeg drajvera (g_fsFilterDriverObject).

// // Razno BOOLEAN FsFilterIsMyDeviceObject(__in PDEVICE_OBJECT DeviceObject) ( return DeviceObject->DriverObject == g_fsFilterDriverObject; )

Izvori i makefile

Uslužni program koji pravi drajver, koristi izvore i makefile datoteke. Ove datoteke sadrže postavke projekta i nazive izvornih datoteka.

Sadržaj izvorne datoteke:

TARGETNAME=FsFilter TARGETPATH=obj TARGETTYPE=DRAJVER DRIVERTYPE=FS SOURCES=\Main.c\IrpDispatch.c\AttachDetach.c\Notification.c\FastIo.c

Makefile je standardan:

Uključi $(NTMAKEENV)\makefile.def

Naredbena linija izgradnje MSVC makefile projekta je:

Pozovite $(WINDDK)\bin\setenv.bat $(WINDDK) chk wxp cd /d $(ProjectDir) build.exe –I

Kako instalirati upravljački program filtera sistema datoteka

SC.EXE pregled

Koristićemo sc.exe (sc – kontrola usluge) za upravljanje našim drajverom. Možemo koristiti ovaj uslužni program naredbenog retka za ispitivanje ili izmjenu baze podataka instaliranih usluga. Isporučuje se sa Windows XP i novijim, ili ga možete pronaći u Windows SDK/DDK.

Instalirajte drajver filtera sistema datoteka

Da instalirate drajver filtera sistema datoteka, pozovite:

Sc kreirajte FsFilter type= filesys binPath= c:\FSFilter.sys

Ovo će kreirati novi unos usluge sa imenom FsFilter sa tipom usluge datotečnog sistema i binarnom putanjom c:\FsFilter.sys.

Pokrenite drajver filtera sistema datoteka

Da pokrenete drajver filtera sistema datoteka, pozovite:

Sc start FsFilter

Pokrenut će se servis FsFilter.

Zaustavite drajver sistema datoteka

Da zaustavite drajver filtera sistema datoteka, pozovite:

Sc stop FsFilter

Usluga FsFilter će biti zaustavljena.

Deinstalirajte drajver filtera sistema datoteka

Da deinstalirate drajver filtera sistema datoteka, pozovite:

Sc izbrišite FsFilter

Ova komanda daje instrukcije upravitelju usluga da ukloni unos usluge s imenom FsFilter.

Rezultirajuća skripta

Sve te komande možemo staviti u jednu batch datoteku kako bismo olakšali testiranje drajvera. Ispod je sadržaj naše komandne datoteke Install.cmd:

Sc kreiranje FsFilter type= filesys binPath= c:\FsFilter.sys sc start FsFilter pauza sc stop FsFilter sc brisanje FsFilter pauza

Pokretanje uzorka upravljačkog programa filtera sistema datoteka

Sada ćemo pokazati kako funkcioniše filter sistema datoteka. U tu svrhu ćemo koristiti Sysinternals DebugView za Windows za praćenje izlaza za otklanjanje grešaka, kao i OSR Device Tree za pregled uređaja i drajvera.

Prvo, napravimo drajver. Nakon toga ćemo kopirati rezultirajuću datoteku FsFilter.sys i Install.cmd skriptu u korijen C pogona.

Upravljački program filtera sistema datoteka i skripta za instalaciju na C pogonu.

Sada ćemo pokrenuti Install.cmd, koji instalira i pokreće drajver sistema datoteka, a zatim čeka na korisnički unos.

Upravljački program filtera sistema datoteka je uspješno instaliran i pokrenut.

Sada bismo trebali pokrenuti uslužni program DebugView.

Konačno možemo vidjeti koji su fajlovi otvoreni! To znači da naš filter radi. Sada bismo trebali pokrenuti uslužni program stabla uređaja i tamo locirati naš upravljački program.

Naš upravljački program filtera u stablu uređaja.

Postoje različiti uređaji koje je kreirao naš vozač. Otvorimo NTFS drajver i pogledajmo stablo uređaja:

Naš filter je vezan za NTFS.

Sada smo povezani. Pogledajmo druge sisteme datoteka:

Naš filter je takođe povezan sa drugim sistemima datoteka.

Konačno, možemo pritisnuti bilo koji taster da nastavimo našu instalacijsku skriptu, zaustavljajući i deinstalirajući drajver.

Naš drajver za filter sistem datoteka je zaustavljen i deinstaliran.

Možemo pritisnuti F5 da osvježimo listu stabla uređaja:

Naši filterski uređaji više nisu u stablu uređaja.

Naš upravljački program filtera sistema datoteka je nestao i sistem radi kao i prije.

Postajemo napredniji

Gore opisani upravljački program filtera sistema datoteka je vrlo jednostavan i nedostaje mu niz funkcija, potrebnih za uobičajeni drajver. Ideja ovog članka je bila da pokaže najlakši način za kreiranje drajvera za filter sistem datoteka, zbog čega smo opisali ovaj jednostavan i lako razumljiv razvojni proces. Možete napisati vlastiti IRP_MJ_FILE_SYSTEM_CONTROL rukovalac za praćenje novopristiglih volumena.

Počni