Sürücü Dosya Sistemleri Filtre Yöneticisi çalışmıyor. Dosya sistemi filtre sürücüleri Avast ücretsiz antivirüs nasıl kurulur

Golovna / Corisna bilgileri

Hiyerarşide ödünç alınan filtre sürücüsü dosya sistemi, isminde dosya sistemi filtre sürücüsü(dosya sistemi filtre sürücüsü). (Filtre sürücüleri div. 9. hakkında) Dosya sistemine her şeyi indirmek ve gerekirse bunları değiştirmek veya devre dışı bırakmak, uzak dosyalar için çoğaltma hizmetleri, dosyaların şifrelenmesi gibi bu tür programların oluşturulmasına izin vermek mümkündür. destek olmak o lisans. B, dosyaları "lot" a dönüştüren bir tür ticari anti-virüs tarayıcısı olabilir, IRP paketlerini IRP_MJ_CREATE komutlarıyla çeviren dosya sistemi sürücüsüne girin; bu, bir saat boyunca dosyanın program tarafından aranmasıyla görülebilir. . İlk olarak, komutun adreslendiği dosya sistemi sürücüsüne böyle bir IRP gönderin, virüsten koruma tarayıcısı dosyada virüs olup olmadığını kontrol eder. Dosya temiz ise anti-virüs tarayıcısı lanset olarak IRP'yi gönderir veya dosyaya virüs bulaşmışsa tarayıcı dosyayı kaldırmak veya taramak için servis işlemine gider. Dosyayı değiştiremezseniz, IRP filtre sürücüsü (pardon "erişim engellendi"), böylece virüs etkinleşmez.

Robotu, dosya sistemi filtreleri için iki özel sürücüyle tanımlayacağız: Filemon ve System Restore. Filemon, dosya sistemi etkinliğini izlemek için bir yardımcı programdır (siteden www.systntemals.com), Vikoristovuetsya, eklentiler ve dosya sistemi sürücüleri arasındaki IRP akışını değiştirmeyen pasif bir filtre sürücüsünün poposu olarak bu kitapla zengin deneylerde. Sistem Geri Yükleme (Sistemin Yeniliği) - Windows XP'de tanıtılan işlevsellik, - önemli sistem dosyalarındaki değişiklikleri izlemek ve yedek kopyalar oluşturmak için vicorist dosya sistemi filtre sürücüsü, böylece dosyalar istasyondaymış gibi döndürülebilir ilhamın yaratılış noktasında onları.


NOT Windows XP Service Pack 2 ve Windows Server 2003, dosya sistemi filtre sürücüleri için bağlantı noktası miniport modelinin bir parçası olarak Dosya Sistemi Filtre Yöneticisi'ni (\Windows\System32\Drivers\Fltmgr.sys) içerir. Bu bileşen Windows 2000 için de geçerli olacaktır.Dosya Sistemi Filtre Yöneticisi, filtre sürücülerinin geliştirilmesini önemli ölçüde basitleştirecek, Windows G/Ç sistemine miniport filtre sürücüleri için bir arabirim sağlayacak ve ayrıca dosya adlarını yüklemek, birimlere bağlanmak ve diğer filtreler. Microsoft dahil perakende şirketleri, Dosya Sistemi Filtre Yöneticisi tarafından beklendiği gibi altyapıya dayalı yeni dosya sistemi filtreleri yazacak ve filtreleri kullanarak bunları kendisine aktaracaktır.


Bazı filtermanager.dll afları ve diğer sistem DLL afları, Windows kayıt defterindeki sorunlardan kaynaklanabilir. Dekіlka programları, filtermanager.dll dosyasını değiştirebilir, ancak programlar silindiyse ya da değiştirildiyse, bazen DLL kayıt defterindeki "artık" (af) girdiler silinir.

Prensip olarak, o saatte, dosyanın asıl yolu değişiklik anı olduğu için, Windows kayıt defterine yanlış kaydedildiği anlamına gelir. Windows, yanlış iletiler için dosyayı bulmaya çalışıyorsa (dosyaların bilgisayarınızdaki dağıtımı için), pardon filtermanager.dll'yi suçlayabilirsiniz. Ayrıca, kötü amaçlı yazılım bulaşması, Üçüncü Taraf Uygulaması ile ilişkili kayıt defteri girdisine zarar verebilir. Bu nedenle, DLL kayıt defteri girdileri zarar görmüşse, sorunu ortadan kaldırmak için bunların düzeltilmesi gerekir.

Bir bilgisayar bakım uzmanı olmadığınız için, affedilebilir olan filtermanager.dll anahtarını kaldırma yöntemiyle Windows kayıt defterini manuel olarak düzenlemeniz önerilmez. Kayıt defterini düzenleme saatinden önce izin verilen aflar, PC'nizin hatalı olmasına ve işletim sisteminizin hatalı bir şekilde kalitesiz olmasına neden olabilir. Gerçekten, bir komaya gir, yanlış yere koy, belki bilgisayarı bunaltır!

Benzer bir riskle bağlantılı olarak, filtermanager.dll ile ilgili olabilecek sorunları taramak ve çözmek için WinThruster (bir Microsoft Gold Certified Partner uzantısı) gibi bir kayıt defteri temizleme aracı kullanmanızı öneririz. Kayıt defterini temizlerseniz, bazı kayıt defteri girdilerini arama, günlük dosyalara gönderme (örneğin, filtermanager.dll affını çağırma) ve çalışmayanları orta kayıt defterine gönderme işlemini otomatikleştirebilirsiniz. Cilt taramasından önce, otomatik olarak bir yedek kopya oluşturulur, bu da tek tıklamayla kendinizi kurtarmanıza ve olası bir bilgisayar hatasından korunmanıza olanak tanır. Naypriёmnіshe, scho kayıt defterini affetmek, sistemin hızını ve üretkenliğini keskin bir şekilde artırabilir.


İlerlemek: Bozuk bir bilgisayar bilmiyorsanız, Windows kayıt defterini manuel olarak düzenlemenizi önermiyoruz. Kayıt Defteri Düzenleyicisinin yanlış seçilmesi ciddi sorunlara yol açabilir. Windows'u yeniden yükleme. Kayıt Defteri Düzenleyicisi'nin yanlış seçilmesinden kaynaklanan hataların düzeltilebileceğini garanti etmiyoruz. Korkunuz ve riskiniz için kayıt defterinin editörü sizsiniz.

Bunu yapmadan önce, Windows kayıt defterini manuel olarak güncellemeden önce, kayıt defterinin bir kısmını dışa aktararak, onu filtermanager.dll'ye bağlayarak (örneğin, Üçüncü Taraf Uygulaması) bir yedek kopya oluşturmak gerekir:

  1. düğmesine tıklayın Hemen hemen.
  2. Giriş " emretmek" içinde bir dizi şaka ... DAMGALAMAYIN GİRİŞ!
  3. Kırpma tuşları CTRL-Üst Karakter klavyede, tuşuna basın GİRİŞ.
  4. Erişim için bir diyalog penceresi görüntülenecektir.
  5. Basmak Böyle.
  6. Kara kutu, yanıp sönen bir imleçle görüntülenir.
  7. Giriş " regedit"ve bas GİRİŞ.
  8. Kayıt Defteri Düzenleyicisi'nin, bir yedek kopya oluşturmanız gereken filtermanager.dll (örneğin, Üçüncü Taraf Uygulaması) ile eşleşen anahtarı seçmesini sağlayın.
  9. Menüde Dosya dürüm İhracat.
  10. Listeye ekle kurtarmakÜçüncü Taraf Uygulama anahtarının yedek bir kopyasını kaydetmeniz gereken bir klasör seçin.
  11. Alan içerisinde dosya adı yedekleme dosyası için bir ad girin, örneğin "Üçüncü Taraf Uygulama Yedeklemesi".
  12. Fikrini değiştir, yerde ne var İhracat aralığı seçilen değer vibran iğne.
  13. Basmak kaydetmek.
  14. Dosya kaydedilecek extensions.reg ile.
  15. Artık, filtermanager.dll ile ilişkili kayıt defteri girdisinin yedek bir kopyasına sahipsiniz.

Kayıt defterinin manuel olarak düzenlenmesi ile meydana gelen çökmeler bu makalede anlatılmayacaktır, değişiklikle oluşan kırıklar sisteminizin çökmesine neden olabilir. Kayıt defterini manuel olarak düzenleme hakkında daha fazla bilgi görmek istiyorsanız, lütfen aşağıdaki metne bakın.

І, söz verdiğiniz prodovzhennya'yı kontrol etmemiş, kendinizi bir anti-virüs programı ile ev bilgisayarınıza bağımsız olarak kurmuş, ancak bazı belirsizliklere rastlamışsınız. Yükleyiciyi www.avast.com/ru resmi web sitesine yükledikten sonra, ev bilgisayarınıza yükleyin qiu programı, Ve hala kayıtlı olması gerekiyor. İçine girdim, şimdi kirpiklerle anlaşamıyorum. En azından Sandbox işlevini veya sandbox'ı çağırmak için, bir kerede bunun hakkında söylemek çok fazla, tüm sisteme bulaşmaktan korkmadan, şüpheli bir programı çalıştırabileceğiniz kendi sanal ortamı. Böylece, nalashtuvannyah'daki eksen kazandı є ve pracyuє chi'nin ekseni anlaşılmaz. Zapplendiğinde tarama gibi bir işlevi hala bilmiyorum, afiş reklamları görmenin iyi bir yolu gibi görünüyor ve etkin olmadığı için Avast, Windows'un kendisi alınana kadar sıkıştırılmış dosyaları yeniden kontrol edecek. Yardım için vdyachny olacağım. Maxim.

Avast ücretsiz antivirüs nasıl kurulur

Hangi antivirüs en iyisidir, böyle bir ilke için yetiştirilmiş gıda, ücretli olanlar ve bezkoshtovny gibi neredeyse tüm antivirüs ürünlerinin koruyucusu olacaklar. Örneğin, kendi savunmasını teşvik etmenin en iyi yolu olarak, diğer birçok şeyin yanı sıra kendi aralarında neden kokuyorlar? ev bilgisayarı Vіd vіrusіv i yakі, krіm antivirüs, tsogo vikoristovuvat programları için. Hemen sizinle yiyeceğe bakabiliriz, nasıl indirilir sokmak bezkostovny antivirüs dur. Sizinle ana programları, hizmetleri, virüs taramasını tartışacağız.

Not: Arkadaşlar Avast anti-virüs programını kaldırmak istiyorsanız acele edin. etrafına iyi bakücretli ve ücretsiz antivirüsler sizi istatistiklerimizle kontrol eder

Temel olarak, anti-virüs programımız Avast'ın koruması, zorlu konut korumasının arkı hakkında bilgi veriyor. Kendi ekranlarının yardımı için Vіdbuvaєtsya. Bu, kalıcı olarak mevcut olan programın modülleridir. operasyonel bellek bilgisayarda görülen her şeyi görür.
Örneğin, Dosya Sistemi Ekranı, dosyalarınız üzerinde gerçekleştirilen tüm işlemlere karşı koruma ve koruma sağlayan ana araçtır. Merezhevy, İnternet üzerinden geçmeye çalışırken virüslerin merezhevu etkinliğini ve seslerini ekrandan kontrol eder. Posta ekranı - takip edin Elektronik posta ve bilgisayarınıza gelen tüm sayfaları büyük ölçüde kontrol edin. Avast programı bile, kök kullanıcı takımlarına karşı etkili olan Sezgisel analiz yoluyla bunu yapabilir.

Eksen size ve bezkoshtovny antivirüs!

İlk alta yerleştirin Dur! ücretsiz antivirüs Yogayı sadece evde kazanabileceğinizi bilmek sizin hatanız. Web sitesinde bir antivirüs alabilirsiniz www.avast.com. Avast antivirüsünün indirilmesiyle ilgili sorunları suçlamak için, resmi distribütör "Avsoft" tarafından şu adresten indirin:

www.avsoft.ru/avast/Free_Avast_home_edition_download.htm
Resmi web sitesindeki antivirüsümüzle ilgileniyoruz
www.avast.com/ru-ru/free-antivirus-download. dürüm Ücretsiz antivirüs ta basın indir,

Hoş Geldiniz Avast Free Antivirus kullanıcıları için Şimdi İndir düğmesine tıklayın.

Zavantazhili, program yükleyicisini çalıştırın. Mevcut sürüm için, varsayılan kurulum ile başka bir antivirüs olarak kurulum arasında seçim yapın. Kaspersky'yi ilk antivirüs yüklüyse, olası bir çakışma.

Ekspres kurulumu seçebilirsiniz.

Neye ihtiyacın var Google tarayıcı Chrome, kutuyu işaretleyin. Kurulum vіdbuvaєtsya odnієї-dvh khvilin germe.
Yükleme tamamlandı. Tisnemo hazır.

İsraftan program tüketen birçok kişi, AVAST antivirüsünü kaydetmenin gerekli olduğuna şaşırıyor, ancak bu doğru. Kayıt çok basit. Kayıt olmak zor.

Obiraemo Temel zahist AVAST! ücretsiz antivirüs.

Basit bir formu hatırlayalım. Bu, ücretsiz bir lisans için kayıttır.

Antivirüs sürümümüz kayıtlı, böyle bir sayfa size posta ile gönderilecektir.

Hemen 20 gün boyunca İnternet Güvenliği sürümüne geçmemiz söylendi, bu sürenin tamamlanmasından sonra bazhanya için dönebilirsiniz. Özgür veya Internet Security'nin bir sürümünü edinin. Biraz yardım almak istiyorsanız, AVAST sürümü ile acele edin! Ücretsiz antivirüs, ne olursa olsun ücretli bir sürüme geçebilirsiniz. Sağa basın üst kodçarmıha ger ve pencereyi kapat.

365 gün sonra yeniden kayıt olmanız gerekecek, hepsi bu. Ücretsiz bir antivirüs Avast'ı nasıl bachite, zavantazhit ve yükleme, prensipte, önemli değil, kaydettirmek kolay değil.

Her şeyi daha net ve akıllıca söyleyebilirsiniz, tüm yönetici nasıl örümcek ağı yapılacağını anlayabilir. Şimdi arkadaşlar saygılar, terfi için program daha da iyileştirildi ve yine de hizmetliler saygınızı artırdı. Avast otomatik olarak güncellenir, bilgisayar açıldıktan ve işletim sistemi başlatıldıktan sonra ses çıkar.



Bir sebepten dolayı, resmi sitede güncellenenleri her an revize edebilirsiniz. Servis Güncelleme programını seçin. Ayrıca, virüsleri taramak ve algılamak için modülü güncelleyebilirsiniz.

Bilgisayarınızı virüslere karşı taramanın birçok yolu vardır. düğmesine tıklayın Bilgisayarı tara. І ihtiyacınız olan seçeneği seçin, örneğin
Ekspres tarama- nesneler otomatik çalıştırma ve dağıtımın tüm alanları için taranacaktır işletim sistemi, virüslerin yuvasını söyle
Dış bilgisayar taraması(yorum yok)
Znіmnih burunlarının taranması- flash sürücülerinizi, USB sabit sürücülerinizi tarar
Taranacak klasörü seçin, Virüslerin varlığını taramak için bağımsız olarak bir klasör seçersiniz.

Veya sağ fare tuşuyla baba ol'a tıklayabilir ve menüde Scanuvati'yi seçebilir ve verilen klasör virüslere çevrilecektir.

Saat başı zavantazhennia OS taranıyor. Örneğin, internette uzun süre gezinmeyi kontrol ederseniz, daha sonra istilacı dosyaların ve sisteme saldırı olduğunda yeniden kontrol edilmesini açabilirsiniz. Avast, Windows'un kendisini, özellikle benzer işlevleri atlayarak normal sisteme alınabilecek tüm dosyaları yeniden yazar, dünyanın hiçbir yerinde Avast'tan bahsetmedim. Aynı zamanda,% 100 vipadkіv'de olmasa da, banner reklamlara yardımcı olan iyi bir zasіb.

Windows'un ana zorluklarından önce Vіkno antivirüs Avast.

Otomatik sanal alan (" Otomatik Korumalı Alan"). Şüpheli eklentiler başlatılıyor sanal çevre, normal bir sistem gibi doğal olarak su takviyeli AVAST ücretsiz sürümümüz size sahip! Ücretsiz antivirüs, yalnızca bu programları çalıştırın, Avast bunu biliyorsa, program özensiz görünüyorsa, program kapanır. AT ücretli sürümler Dur! Profesyonel Antivirüs ve AVAST! Internet Security, kendi ihtiyaçlarınız için programı bu ortamda kendiniz çalıştırabilirsiniz.

Aynı adres için aynı web sitelerini engelleme. Babanızın kontrolü için bir yol olarak bu işlevi kazanabilirsiniz.

Diğer her şey pencerede mevcuttur Gerçek zamanlı ekran o vikni Nalaştuvannya. Orta koristuvach'ın, sanki yazmak mantıksızmış gibi, yetkililerin görevlerini devralmak zorunda kaldığı söylenebilir.

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

// // Global veri FAST_IO_DISPATCH g_fastIoDispatch = ( sizeof(FAST_IO_DISPATCH), FsFilterFastIoCheckIfPossible, ... ); // // DriverEntry - Sürücünün noktasını girin NTSTATUS DriverEntry(__inout PDRIVER_OBJECT DriverObject, __in PUNICODE_STRING RegistryPath) ( ... // // fast-io sevk tablosunu ayarlayın. // DriverObject->

Sürücü kaldırma rutinini ayarlama

// // DriverEntry - Sürücünün noktasını girin NTSTATUS DriverEntry(__inout PDRIVER_OBJECT DriverObject, __in PUNICODE_STRING RegistryPath) ( ... // // Sürücü boşaltma rutinini ayarlayın (yalnızca hata ayıklama amaçlı). // DriverObject->

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

IrpDispatch.c

Gönderim geçişi

// // PassThrough IRP İşleyicisi NTSTATUS FsFilterDispatchPassThrough(__in PDEVICE_OBJECT DeviceObject, __in PIRP Irp) ( PFSFILTER_DEVICE_EXTENSION pDevExt = (PFSFILTER_DEVICE_EXTENSION)

sevkıyat oluştur

// // IRP_MJ_CREATE IRP İşleyicisi NTSTATUS FsFilterDispatchCreate(__in PDEVICE_OBJECT DeviceObject, __in PIRP Irp) ( PFILE_OBJECT pFileObject = IoGetCurrentIrpStackLocation(Irp)->FileObject; DbgPrint

FastIo.c

// FAST_IO_DISPATCH işleme yordamının geçerli olup olmadığını test etmek için makro #define VALID_FAST_IO_DISPATCH_HANDLER(_FastIoDispatchPtr, _FieldName) \ (((_FastIoDispatchPtr) != NULL) && \ ((_FastIoDispatchPtr) +FIE_SpatchPtr)->(_FastIoDispatchPtr)-> *)))) && \ ((_FastIoDispatchPtr)->_FieldName != NULL))

Hızlı G/Ç geçişi

BOOLEAN FsFilterFastIoQueryBasicInfo(__in PFILE_OBJECT FileObject, __in BOOLEAN Bekleyin, __out PFILE_BASIC_INFORMATION Arabellek, __out PIO_STATUS_BLOCK IoStatus, __in PDEVICE_OBJECT DeviceObject) ( // // Bu tip PFILE_OBJECT DeviceObject (Hızlı DEVİR I_O Nesnesi) ( // // PFILE_BASIC_INFORMATION Buffer __out) DeviceExtension)->AttachedToDeviceObject;PFAST_IO_DISPATCH fastIoDispatch = nextDeviceObject->DriverObject ->FastIoDispatch;

Hızlı G/Ç ayırma cihazı

Bildirim.c

AttachDetach.c

takma

ayırma

void FsFilterDetachFromDevice(__in PDEVICE_OBJECT DeviceObject) ( PFSFILTER_DEVICE_EXTENSION pDevExt = (PFSFILTER_DEVICE_EXTENSION) DeviceObject->DeviceExtension; IoDetachDevice(pDevExt->)

// // Misc BOOLEAN FsFilterIsMyDeviceObject(__in PDEVICE_OBJECT DeviceObject) ( DeviceObject döndür->

Kaynaklar ve makefile

Dosyalardan içerik:

Makefile standarttır:

SC.EXE'ye genel bakış

Sc FsFilter'ı başlat

Dosya sistemi sürücüsünü durdur

Sc durdurma FsFilter

Sc FsFilter'ı sil

Sonuç komut dosyası

Daha gelişmiş

Çözüm

Vizörümüzde, size bir dosya dosyası dosya dosyası oluşturmak için basit adımlar gönderdik. Diğer dosyalar dosyalar dosyalar dosyalar dosyalar da birleştirilebilir. Ekli filtreleri olan dosya sistemi aygıt yığınını düşündük ve sürücüden hata ayıklama çıktısının nasıl izleneceğini tartıştık. Bu makaledeki kaynakları kendi dosya sistemi filtre sürücünüzü geliştirmek için bir iskelet olarak kullanabilir ve gereken beh'yi değiştirebilirsiniz.

Referanslar

  1. Dosya Sistemi veya Dosya Sistemi Filtre Geliştiricileri için İçerik
  2. filtre DDK örneği

Umarım Windows sürücü geliştirme eğitimimizi beğenmişsinizdir. Dosya sistemi filtre sürücüsü geliştirme gibi projeniz üzerinde çalışmak üzere deneyimli bir ekip kiralamaya hazır mısınız? Sadece bizimle iletişime geçin ve size tüm detayları vereceğiz!

Bu eğitim size basit sürücü geliştirme dosya sistemleri için basit hilelerin hızlı bir özetini verecektir. Demo sürücü, ne düşünüyorsunuz, kilidini açmak için açık dosyaların adlarıyla ne yapmalı.

Bu materyal, ana Windows Sürücü Geliştirme Deneyimi olan ve C / C ++ bilgisi kadar iyi olan mühendisler için yazılmıştır. Ek olarak, vin, Windows sürücü geliştirme konusunda derin bir imzası olmayan kişiler için de bir dönüm noktası olabilir.

Tarafından yazılmıştır:
Sergey Podobriy,
Sürücü Ekibi Lideri

Windows dosya sistemi filtre sürücüsü nedir?

Her dosya sistemi G/Ç işlemi (oluşturma, okuma, yazma, yeniden adlandırma, vb.) sırasında bir Windows dosya sistemi Filtre sürücüsü çağrılır. Orada, dosya sisteminin davranışını değiştirmek için inşa edilmiştir. Dosya sistemi filtre sürücüleri, eski sürücülerle karşılaştırılabilir, ancak birkaç özel geliştirme adımı gerektirecektir. Zahist, yedekleme, anlık görüntü ve anti-virüs yazılımı hack sürücüleri.

Basit Bir Dosya Sistemi Filtre Sürücüsü Geliştirme

Geliştirmeye başlamadan önce

İlk olarak, sistem sürücü dosyasını genişletmek için Microsoft web sitesinden IFS veya WDK kitine ihtiyacınız olacak. Bilgisayarınız için ekstra ortamın %WINDDK% değerini de değiştirebilirsiniz, böylece WDK/IFS kiti ayarlarını yapabilirsiniz.

Dikkat: Sürücü sistem dosyasındaki diğer herhangi bir hata, BSOD veya sistem kararsızlığına neden olabilir.

ana.c

Dosya sistemi filtre sürücüsü girişi

Dosya sistemi filtre sürücüsü de dahil olmak üzere herhangi bir sürücü için erişim noktası. İlk suçlanacak olan, global bir değişken olarak DriverObject deposudur (daha sonra kullanacağız):

// // Global veri PDRIVER_OBJECT g_fsFilterDriverObject = NULL; // // DriverEntry - Sürücünün NTSTATUS DriverEntry noktasını girin (__inout PDRIVER_OBJECT DriverObject, __in PUNICODE_STRING RegistryPath) ( NTSTATUS status = STATUS_SUCCESS; ULONG i = 0; // ASSERT (FALSE); // / Sürücü nesnemizi depolayın. // g_fsFilterDriverObject = Sürücü Nesnesi; ... )

IRP sevk tablosunu ayarlama

Dosya filtresinin dosya sistemini genişletmenin bir sonraki adımı, IRP işleyicilerine işlev işaretçileri ile IRP gönderme tablosunu doldurmaktır. Görevli sürücümüzde daha fazla istek gönderen tek bir geçiş IRP işleyiciniz var. IRP işleyicilerinin uygulanmasını daha sonra ele alacağız.

// // DriverEntry - Sürücünün noktasını girin NTSTATUS DriverEntry(__inout PDRIVER_OBJECT DriverObject, __in PUNICODE_STRING RegistryPath) ( ... // // Sürücü nesnesi gönderme tablosunu başlat. // for (i = 0; i)<= IRP_MJ_MAXIMUM_FUNCTION; ++i) { DriverObject->MajorFunction[i] = FsFilterDispatchPassThrough; ) DriverObject->MajorFunction = FsFilterDispatchCreate; ... )

Hızlı I/O sevk tablosunu ayarlama

Dosya sistemi filtre sürücüsü, hızlı G/Ç dağıtım tablosu gerektirir. Bu tabloyu kurmamak sistemin çökmesine neden olur. Fast I/O, IRP'den daha hızlı olan I/O işlev girişimlerinden farklı bir dünyadır.

// // Global veri FAST_IO_DISPATCH g_fastIoDispatch = ( sizeof(FAST_IO_DISPATCH), FsFilterFastIoCheckIfPossible, ... ); // // DriverEntry - Sürücünün noktasını girin NTSTATUS DriverEntry(__inout PDRIVER_OBJECT DriverObject, __in PUNICODE_STRING RegistryPath) ( ... // // fast-io gönderme tablosunu ayarlayın. // DriverObject->FastIoDispatch = &g_fastIo)

Dosya sistemi değişiklikleriyle ilgili bildirimleri kaydetme

Dosya sistemi dosya filtresini genişletirken, dosya sistemi değişikliği dosyası hakkında bir bildirim kaydetmekten sorumluyuz. Etkinleştirildikçe dosya sisteminin bozulduğunu veya sürücü dosyası dosyasının modunda değiştirildiğini unutmayın.

// // DriverEntry - Sürücünün noktasını girin NTSTATUS DriverEntry(__inout PDRIVER_OBJECT DriverObject, __in PUNICODE_STRING RegistryPath) ( ... // // Dosya sistemi kayıt yollarını değiştirin. // status = IoRegisterFs (!NT_SUCCESS(status)) ( dönüş durumu ; ) ... )

Sürücü kaldırma rutinini ayarlama

Dosya sisteminin sonunda, sürücü başlatma bir boşaltma rutini ayarlıyor. Bu rutin, yeniden başlatmaya gerek kalmadan dosya filtresi sürücüsünü yüklemenize ve kaldırmanıza yardımcı olacaktır. Delicesine, bu sürücü, dosya sistemi filtrelerini yakalamak imkansız olduğundan, yalnızca kilit açma amacıyla engellenemez olarak ayarlanabilir.

// // DriverEntry - Sürücünün noktasını girin NTSTATUS DriverEntry(__inout PDRIVER_OBJECT DriverObject, __in PUNICODE_STRING RegistryPath) ( ... // // Sürücü boşaltma rutinini ayarlayın (yalnızca hata ayıklama amaçlı). // DriverObject->DriverUnload = STATUS_SUCCESS;)

Dosya sistemi sürücüsü kaldırma uygulaması

Sürücü boşaltma rutini, kaynakları temizler ve bunları serbest bırakır. Dosya sistemi sürücüsü geliştirme için yaklaşan zaman, dosya sistemi değişiklikleri için kayıt dışı bildirimdir.

// // VOID FsFilterUnload(__in PDRIVER_OBJECT DriverObject) rutinini kaldır ( ... // // Dosya sistemi değişiklikleri için kayıtsız geri arama rutini. // IoUnregisterFsRegistrationChange(DriverObject, FsFilterNotificationCallback); ... )

Bundan sonra, bildirimlerin nasıl kaydedileceği, ekin kapılarına tıklamanız ve geri dönmeniz gerekir. Tüm bekleyen IRP'ler tamamlanana kadar beş saniye bekleyin. Bunun bir hata ayıklama çözümü olduğuna dikkat edin. Bu, çok sayıda vipadkiv'de çalışır, ancak sağlıklı bir şekilde çalışacağınızı garanti etmez.

// // Unload yordamı VOID FsFilterUnload(__in PDRIVER_OBJECT DriverObject) ( ... for (;;) ( IoEnumerateDeviceObjectList(DriverObject, devList, sizeof(devList), &numDevices); if (0 == numDevices) ( break; ) min( numDevices, RTL_NUMBER_OF(devList)); için (i = 0; i< numDevices; ++i) { FsFilterDetachFromDevice(devList[i]); ObDereferenceObject(devList[i]); } KeDelayExecutionThread(KernelMode, FALSE, &interval); } }

IrpDispatch.c

Gönderim geçişi

Tek fark, IRP işleyicisinin istekleri bir sonraki sürücüye iletmesidir. Sonraki sürücü nesnesi, cihaz uzantımızda saklanır.

// Geçiş IRP işleyicisi Ntstatus FSFilterdispatchpasshththythyThththththrough (__in pdevice_object deviceObject, __in pirp irp) (pfsfilter_device_extension pdevext = (pfsfilter_device_extension) deviceOmpject->devicextension;

sevkıyat oluştur

Her dosya oluşturma işlemi IRP işleyicisini çağırır. Dosya adını PFILE_OBJECT ile kaydettikten sonra debug çıktısına yazdırıyoruz. Ayrıca, yukarıda tanımladığımız geçiş işleyicisini nasıl seçersiniz? bu durumlarda isimler.

// // IRP_MJ_CREATE IRP İşleyicisi NTSTATUS FsFilterDispatchCreate(__in PDEVICE_OBJECT DeviceObject, __in PIRP Irp) ( Irp);

FastIo.c

Dosya sistemi sınırları nedeniyle aşağıdaki G/Ç rutinlerinin tümü geride bırakılmaz, aşağıdaki makroyu kullanarak bir sonraki sürücü için hızlı G/Ç gönderme tablosunun geçerliliğini doğrulamaya devam edeceğiz:

// FAST_IO_DISPATCH işleme yordamının geçerli olup olmadığını test etmek için makro #define VALID_FAST_IO_DISPATCH_HANDLER(_FastIoDispatchPtr, _FieldName) \ (((_FastIoDispatchPtr) != NULL) && \ ((_FastIoDispatchPtr) +FIE_SpatchPtr)->(_FastIoDispatchPtr)-> *)))) && \ ((_FastIoDispatchPtr)->_FieldName != NULL))

Hızlı G/Ç geçişi

IRP isteklerinin aksine, hızlı G/Ç isteklerinin geçişi büyük miktarda kod gerektirir çünkü hangi hızlı G/Ç işlevinin kendi parametre seti vardır. Bunları öğrenebilirseniz, geçiş işlevlerinin nasıl kullanılacağını öğrenin:

BOOLEAN FsFilterFastIoQueryBasicInfo(__in PFILE_OBJECT FileObject, __in BOOLEAN Bekleyin, __out PFILE_BASIC_INFORMATION Arabellek, __out PIO_STATUS_BLOCK IoStatus, __in PDEVICE_OBJECT DeviceObject) ( // // Bu tip PFILE_OBJECT DeviceObject (Hızlı DEVİR I_O Nesnesi) ( // // PFILE_BASIC_INFORMATION Buffer __out) DeviceExtension)->AttachedToDeviceObject; PFAST_IO_DISPATCH fastIoDispatch = nextDeviceObject->DriverObject ->FastIoDispatch; if (VALID_FAST_IO_DISPATCH_HANDLER(fastIoDispatch, FastIoQueryBasicInfo), FastIoQueryBasicInfo), Return (fastIoDispatch),Wait (fastIoDispatch);us;

Hızlı G/Ç ayırma cihazı

Aygıtı ayır, sonraki sürücüyü çağırmadan işlememiz gereken belirli bir hızlı G/Ç isteğidir. Dosyayı aygıt yığını dosya sisteminden ayırarak aygıtımızı hızlandırmaktan siz sorumlusunuz. Kodu nasıl göstereceğinizi anlayabilirseniz, bu isteği nasıl yönetebilirsiniz:

VOID FsFilterFastIoDetachDevice(__in PDEVICE_OBJECT SourceDevice, __in PDEVICE_OBJECT TargetDevice) ( // // Dosya sisteminin birim aygıtı nesnesinden ayırın. // IoDetachDevice(TargetDevice); IoDeleteDevice(SourceDevice)

Bildirim.c

dosya sistemi sistemi, kontrol cihazları ve hacim cihazlarından oluşur. Depolama aygıtı yığınına bağlı birim aygıtları. Kontrol cihazı bir sistem dosyası olarak kaydedilir.

Bir dosya sistemi eterinin kendisini aktif olarak kaydettiği veya kaydını sildiği zaman, tüm aktif dosya sistemleri için geri arama başlatılır. Bu, dosya sistemimizi bir dosya sistemine bağlamak veya genişletmek için harika bir yerdir. Sistemin dosyası hacklenirse yöneticilerimize (özelleştirilmediği için) yolsuzluklardan biz sorumluyuz ve onlara bağlı olduğu ortaya çıkıyor. Dosya sistemini devre dışı bırakırken, kontrol ekini açar, ekimizi kontrol eder ve bildiririz. Dosya sistemi ve birim aygıtlarının gösterimi, daha önce açıklanacak olan FsFilterFastIoDetachDevice rutininde bulunabilir.

// // Dosya sistemi etherther kayıtlı olduğunda veya // kendisini aktif dosya sistemi olarak kaydetmediğinde Cue rutini çağrılır. VOID FsFilterNotificationCallback(__in PDEVICE_OBJECT DeviceObject, __in BODELEAN FsActive)

AttachDetach.c

Bu dosya, bağlantı, tanıma ve düzeltme için tekstil tutamaçlarından çıkarılmalıdır, böylece filtreniz benzer olabilir.

takma

У зв'язку з тим, щоб потребувати виклику IoCreateDevice для створення нового пристрою об'єкта з пристроєм extension, і вони propagated device object flags від пристрою об'єкта, щоб зайняти це для вирішення цього (DO_BUFFERED_IO, DO_DIRECT_IO, FILE_DEV. Існує завдання IoAttachDeviceToDeviceStackSafe hata durumunda gecikmeli döngüde nesneyi cihaz uzantısına ekleyin ve DO_DEVICE_INITIALIZING bayrağını temizleyin.

// // Yapılar typedef struct _FSFILTER_DEVICE_EXTENSION ( PDEVICE_OBJECT AttachedToDeviceObject; ) FSFILTER_DEVICE_EXTENSION, *PFSFILTER_DEVICE_EXTENSION;

ayırma

Ayırmak oldukça basittir. Cihaz uzantısı aracılığıyla, bağlı olduğumuz cihazı ve IoDetachDevice ve IoDeleteDevice çağrısını alırız.

void FsFilterDetachFromDevice(__in PDEVICE_OBJECT DeviceObject) ( PFSFILTER_DEVICE_EXTENSION pDevExt = (PFSFILTER_DEVICE_EXTENSION) DeviceObject->DeviceExtension; IoDetachDevice(pDevExt->AttachedToDeviceObject)

Cihazımızın takılı olup olmadığını kontrol etme

Sob vikonati, siz eke çıksanız da çıkmasanız da, vikoristannya IoGetAttachedDeviceReference ve IoGetLowerDeviceObject için kaydı ek üzerinden tekrar edeceksiniz, sonra ekimiz için verilecektir. Sürücü sürücüsü nesnesini hızlandırmak için eklentimizi sürücümüzünkiyle (g_fsFilterDriverObject) tanımlayabilirsiniz.

// // Misc BOOLEAN FsFilterIsMyDeviceObject(__in PDEVICE_OBJECT DeviceObject) ( dön DeviceObject->DriverObject == g_fsFilterDriverObject; )

Kaynaklar ve makefile

Sürücüyü, wiki sürücüsünü ve dosya dosyalarını oluşturan yardımcı program. Dosyalar Tasarım işaretlerini ve dosyaları değiştirin Addaki Dosyalar.

Dosyalardan içerik:

TARGETNAME=FsFilter TARGETPATH=nesne TARGETTYPE=SÜRÜCÜ SÜRÜCÜ TİPİ=FS SOURCES=\Main.c\IrpDispatch.c\AttachDetach.c\Notification.c\FastIo.c

Makefile standarttır:

$(NTMAKEENV)\makefile.def'i dahil et

MSVC makefile proje oluşturma komut satırı:

$(WINDDK)\bin\setenv.bat $(WINDDK) chk wxp cd /d $(ProjectDir) build.exe -I'yi arayın

Dosya Sistemi Filtre Sürücüsü Nasıl Yüklenir

SC.EXE'ye genel bakış

Sürücümüzü kontrol etmek için sc.exe (sc - servis kontrolü) kullanacağız. Veritabanı hizmetlerini kaldırmak veya değiştirmek için araçların komut satırının zaferi. Kalça, Windows XP ve üstü ile gönderilir veya Windows SDK/DDK'da indirebilirsiniz.

Dosya sistemi filtre sürücüsünü yükleyin

Dosya sistemi filtre sürücüsünü yüklemeden önce şu numarayı arayın:

Sc oluşturmak FsFilter type=filesys binPath=c:\FSFilter.sys

Bu, dosya sistemi hizmet türü ve c:\FsFilter.sys ikili yoluna sahip FsFilter adında yeni bir hizmet merkezi oluşturacaktır.

Dosya sistemi filtre sürücüsünü başlat

Dosya sistemi filtre sürücüsü düğmesine basın, arayın:

Sc FsFilter'ı başlat

FsFilter hizmeti başlatılacaktır.

Dosya sistemi sürücüsünü durdur

Dosya sistemi dosya sürücüsüne gidin, arayın:

Sc durdurma FsFilter

FsFilter hizmeti durdurulacak.

Dosya sistemi filtre sürücüsünü kaldırın

Sürücü sistem dosyası dosyasını yüklemek için şunu arayın:

Sc FsFilter'ı sil

Bu komut, FsFilter adlı hizmet girişini kaldırarak yönetici hizmetini yükler.

Sonuç komut dosyası

Sürücü testini kolaylaştırmak için tüm cezaları tek bir toplu iş dosyasında başlatabilirsiniz. Bundan sonra Install.cmd dosyamız yerine dosyaya:

Sc oluştur FsFilter type=filesys binPath=c:\FsFilter.sys sc başlat FsFilter duraklat sc durdur FsFilter sc sil FsFilter duraklat

Dosya Sistemi Filtre Sürücüsünün Bir Örneğinin Çalıştırılması

Dosya sistemi filtresinin nasıl çalıştığını göstermek için aşağıya bakın. Bunun için, aygıtları ve sürücüleri gözden geçirmek için OSR Aygıt Ağacı'nın yanı sıra hata ayıklama çıktısını izlemek için Windows için Sysinternals DebugView'da ince ayar yapacağız.

İlk olarak, sürücüyü oluşturalım. Bundan sonra FsFilter.sys dosyası yakalanacaktır.

Dosya sistemi filtre sürücüsü ve komut dosyasını C sürücüsüne yükleyin.

Dosya sürücüsü dosyasını kurmak ve başlatmak için Install.cmd'ye tıklayın ve kullanıcı girdisini bekler.

Dosya sistemi filtre sürücüsü başarıyla kuruldu ve başlatıldı.

Şimdi DebugView yardımcı programını başlatmalıyız.

Sonunda, hangi dosyaların açıldığını görebiliriz! Tse, filtre robotlarımız anlamına gelir. Artık ağaç hizmetinizden ve oradaki sürücümüzden biz sorumluyuz.

şoför şoförümüz saflarda.

Şoförümüzün yardımı için farklı müştemilatlar var. NTFS sürücüsünü açalım ve aygıt ağacına bir göz atalım:

Bu dosya NTFS için doğrulanmıştır.

Şimdi yeniden bağlandık. Diğer dosya sistemlerine de bakalım:

Filtremiz diğer dosya sistemlerine de dahildir.

Haklısınız, komut dosyamızı canlandırmak, sürücüyü durdurmak ve kaldırmak için bazı düğmelere basabiliriz.

Dosya sistemleri filtre sürücümüz durduruldu ve kaldırıldı.

Cihaz ağacı listesini yenilemek için F5'e basabiliriz:

Ek dosyalarınız strom tarafından tutulmaz.

Dosya sistemi sürücünüz kayboldu ve sistem eskisi gibi çalışıyor.

Daha gelişmiş

Yukarıda açıklanan dosya sistemi filtre sürücüsü çok basittir ve ortak sürücü için gerekli olan bir dizi işlevden yoksundur. Bu makalenin amacı, bir dosya sistemi filtre sürücüsü oluşturmanın en kolay yolunu göstermekti, bu yüzden basit ve anlaşılması kolay geliştirme sürecini anlattık. Veriler mevcutsa, işlem yapmadan önce şeridinizden IRP_MJ_FILE_SYSTEM_CONTROL işleyicisine teklif verebilirsiniz.

© 2022 androidas.ru - Android hakkında her şey