Drivrutinen för filsystemets filterhanterare körs inte. Filsystem filter drivrutiner

Drivrutinen för filsystemets filterhanterare körs inte.  Filsystem filter drivrutiner
Drivrutinen för filsystemets filterhanterare körs inte. Filsystem filter drivrutiner

En filterdrivrutin som upptar en högre nivå i hierarkin än föraren filsystem, kallas drivrutinen för filsystemets filter(filsystemfilterdrivrutin). (Se kapitel 9 för filterdrivrutiner.) Dess förmåga att se alla förfrågningar till filsystemet och modifiera eller exekvera dem efter behov gör applikationer som replikeringstjänster möjliga. raderade filer, filkryptering, Reserv exemplar och licensiering. B någon reklam virusskanner, som kontrollerar filer i farten, inkluderar en filsystemdrivrutin som fångar upp IRP-paket med IRP_MJ_CREATE-kommandon som utfärdas varje gång ett program öppnar en fil. Innan du skickar en sådan IRP till filsystemdrivrutinen adresserad till givet kommando, kontrollerar virusskannern den öppnade filen för virus. Om filen är ren skickar virusskannern IRP:en ner i kedjan, men om filen är infekterad anropar skannern sin serviceprocess för att ta bort eller desinficera filen. Om filen inte kan desinficeras, avvisar filterdrivrutinen IRP (vanligtvis med ett "access denied"-fel) för att förhindra att viruset återaktiveras.

I det här avsnittet kommer vi att beskriva driften av två specifika filsystemfilterdrivrutiner: Filemon och Systemåterställning. Filemon - ett verktyg för att övervaka filsystemaktivitet (från webbplatsen www.systntemals.com), som används i många av experimenten i den här boken är ett exempel på en passiv filterdrivrutin som inte ändrar IRP-flödet mellan applikationer och filsystemdrivrutiner. Systemåterställning, en funktion som introduceras i Windows XP, använder filsystemets filterdrivrutin för att övervaka ändringar av nyckel systemfiler och skapar säkerhetskopior av dem så att dessa filer kan återställas till de tillstånd som de hade när återställningspunkterna skapades.


NOTERA Windows XP Service Pack 2 och Windows Server 2003 inkluderar filsystemfilterhanteraren (\Windows\System32\Drivers\Fltmgr.sys) som en del av port-miniportmodellen för filsystemfilterdrivrutiner. Den här funktionen kommer också att vara tillgänglig för Windows 2000. Filsystemfilterhanteraren förenklar dramatiskt utvecklingen av filterdrivrutiner genom att tillhandahålla ett miniport-filterdrivrutinsgränssnitt till Windows I/O-delsystemet, samt tjänster för att söka efter filnamn, ansluta till volymer och interagera med andra filter. Utvecklare, inklusive Microsoft, kommer att skriva nya filsystemfilter baserat på infrastrukturen som tillhandahålls av filsystemfilterhanteraren och porta befintliga filter till den.


Ibland filtermanager.dll och andra fel systemfel DLL kan relateras till problem i Windows-registret. Flera program kan använda filen filtermanager.dll, men när dessa program tas bort eller ändras kan ibland föräldralösa (ogiltiga) DLL-registerposter lämnas kvar.

I grund och botten betyder detta att även om den faktiska sökvägen till filen kan ha ändrats, är dess felaktiga tidigare plats fortfarande registrerad i Windows-registret. När Windows försöker leta upp dessa felaktiga filreferenser (filplatser på datorn) kan det uppstå filtermanager.dll-fel. Dessutom kan infektion med skadlig kod ha skadat registerposter relaterade till Third-Party Application. Således måste dessa skadade DLL-registerposter repareras för att åtgärda roten till problemet.

Manuell redigering av Windows-registret för att ta bort ogiltiga filtermanager.dll-nycklar rekommenderas inte om du inte arbetar som datatekniker. Misstag som görs när du redigerar registret kan göra din dator oanvändbar och orsaka irreparabel skada på ditt operativsystem. Faktum är att även ett kommatecken på fel ställe kan hindra din dator från att starta upp!

På grund av denna risk rekommenderar vi att du använder en betrodd registerrensare som t.ex. WinThruster (Utvecklad av Microsoft Gold certifierad partner) för att söka och reparera eventuella filtermanager.dll-relaterade registerproblem. Med hjälp av en registerrensare automatiseras processen att hitta ogiltiga registerposter, saknade filreferenser (som den som orsakar felet i filtermanager.dll) och brutna länkar i registret. Före varje skanning skapas en automatiskt säkerhetskopia, som låter dig ångra alla ändringar med ett enda klick och skyddar dig från eventuell skada på din dator. Det bästa är att fixa registerfel drastiskt kan förbättra systemets hastighet och prestanda.


Varning: Om du inte är erfaren användare PC, vi rekommenderar INTE att du redigerar Windows-registret manuellt. Felaktig användning av Registereditorn kan leda till allvarliga problem och kräva installera om Windows. Vi garanterar inte att problem som beror på missbruk av Registereditorn kan lösas. Du använder Registereditorn på egen risk.

Innan manuell återställning Windows-registret måste du skapa en säkerhetskopia genom att exportera en del av registret som är relaterat till filtermanager.dll (t.ex. Third-Party Application):

  1. Klicka på knappen Börja.
  2. Stiga på " kommando"V sökfältet... TRYCK INTE ÄN STIGA PÅ!
  3. Håller nycklar CTRL-Skift på tangentbordet trycker du på STIGA PÅ.
  4. En åtkomstdialog kommer att visas.
  5. Klick Ja.
  6. Den svarta rutan öppnas med en blinkande markör.
  7. Stiga på " regedit" och tryck STIGA PÅ.
  8. I registerredigeraren väljer du den filtermanager.dll-relaterade nyckel (t.ex. tredjepartsprogram) som du vill säkerhetskopiera.
  9. På menyn Fil Välj Exportera.
  10. Angivna Spara till välj den mapp där du vill spara säkerhetskopian av tredjepartsprogramnyckeln.
  11. I fält Filnamn ange ett namn för säkerhetskopieringsfilen, till exempel "Tredjepartsapplikationssäkerhetskopiering".
  12. Se till att fältet Exportintervall valt värde Vald gren.
  13. Klick Spara.
  14. Filen kommer att sparas med .reg förlängning.
  15. Du har nu en säkerhetskopia av din filtermanager.dll-relaterade registerpost.

Nästa steg för manuell redigering av registret kommer inte att behandlas i den här artikeln, eftersom de sannolikt kommer att skada ditt system. Om du vill ha mer information om att redigera registret manuellt, se länkarna nedan.

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

// // Globala data FAST_IO_DISPATCH g_fastIoDispatch = ( sizeof(FAST_IO_DISPATCH), FsFilterFastIoCheckIfPossible, ... ); // // DriverEntry - Ingångspunkt för drivrutinen NTSTATUS DriverEntry(__inout PDRIVER_OBJECT DriverObject, __i PUNICODE_STRING RegistryPath) ( ... // // Ställ in fast-io-utskickningstabell. // DriverObject->

Ställa in rutin för urladdning av drivrutinen

// // DriverEntry - Ingångspunkt för drivrutinen NTSTATUS DriverEntry(__inout PDRIVER_OBJECT DriverObject, __i PUNICODE_STRING RegistryPath) ( ... // // Ställ in rutin för bortladdning av drivrutinen (endast felsökningsändamål). // DriverObject->

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

IrpDispatch.c

Skicka genomkoppling

// // PassThrough IRP-hanterare NTSTATUS FsFilterDispatchPassThrough(__in PDEVICE_OBJECT DeviceObject, __i PIRP Irp) ( PFSFILTER_DEVICE_EXTENSION pDevExt = (PFSFILTER_DEVICE_EXTENSION)Device ILocationrCptenExtension; (Irp); returnera IoCall Driver(pDevExt->

Skicka skapa

// // IRP_MJ_CREATE IRP-hanterare NTSTATUS FsFilterDispatchCreate(__in PDEVICE_OBJECT DeviceObject, __i PIRP Irp) ( PFILE_OBJECT pFileObject = IoGetCurrentIrpStackLocation(IrpFibtO); bject->

FastIo.c

// Makro för att testa om FAST_IO_DISPATCH-hanteringsrutinen är giltig #define VALID_FAST_IO_DISPATCH_HANDLER(_FastIoDispatchPtr, _FieldName) \ (((_FastIoDispatchPtr) != NULL) && \ (((>FastIoDispatchPtr)\(_FastIoDispatch)\(_FastIoDispatch) (FIELD_OFFSET (FAST_IO_DISPATCH, _Fältnamn) + sizeof(void *))) && \ ((_FastIoDispatchPtr)->_FieldName != NULL))

Snabb I/O-genomföring

BOOLEAN FsFilterFastIoQueryBasicInfo(__in PFILE_OBJECT FileObject, __in BOOLEAN Wait, __out PFILE_BASIC_INFORMATION Buffer, __out PIO_STATUS_BLOCK IoStatus, __in PDEVICE_OBJECT Device/ /JOBJECT Device/ /JObject_ of IPDEVICE_OBJECT Device/ /JOBject_ ECT nextDeviceObject = ((PFSFILTER_DEVICE_EXTENSION) DeviceObject- >DeviceExtension)->AttachedToDeviceObject; PFAST_IO_DISPATCH fastIoDispatch = nextDeviceObject->DriverObject ->FastIoDispatch; if (VALID_FAST_IO_DISPATCH_HANDLER(fastIoDispatch, FastIoIoQuery)Bas return

Snabb I/O-koppla enhet

Notification.c

AttachDetach.c

Fästa

Lossande

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

// // Övrigt BOOLEAN FsFilterIsMyDeviceObject(__i PDEVICE_OBJECT DeviceObject) ( returnera DeviceObject->

Källor och makefile

Innehållet i källfilen:

Makefilen är standard:

SC.EXE översikt

Sc starta FsFilter

Stoppa drivrutinen för filsystemet

Sc stoppa FsFilter

Sc ta bort FsFilter

Resulterande manus

Blir mer avancerad

Slutsats

I vår handledning har vi gett dig enkla steg för att skapa en filsystemfilterdrivrutin. Vi har visat hur du installerar, startar, stoppar och avinstallerar en filsystemfilterdrivrutin med hjälp av kommandoraden. Andra problem med filsystemfilterdrivrutiner har också diskuterats. Vi har övervägt filsystemets enhetsstacken med bifogade filter och har diskuterat hur man övervakar felsökningsutdata från drivrutinen. Du kan använda resurserna i den här artikeln som ett skelett för att utveckla din egen filsystemfilterdrivrutin och ändra dess beteende enligt din behov.

Referenser

  1. Innehåll för utvecklare av filsystem eller filsystemfilter
  2. sfilter DDK-exempel

Hoppas du gillade vår handledning för utveckling av Windows-drivrutiner. Är du redo att anställa ett erfaret team för att arbeta med ditt projekt som filsystemutveckling av filterdrivrutiner? Kontakta oss bara så ger vi dig alla detaljer!

Denna handledning ger dig lättförståeliga steg för en enkel utveckling av filsystemfilterdrivrutiner. Demodrivrutinen som vi visar hur du skapar skriver ut namn på öppna filer för att felsöka utdata.

Den här artikeln är skriven för ingenjörer med grundläggande erfarenhet av utveckling av drivrutiner för Windows samt kunskap om C/C++. Dessutom kan det också vara användbart för personer utan en djup förståelse av Windows-drivrutinsutveckling.

Skriven av:
Sergey Podobriy,
Ledare för förarteamet

Vad är Windows filsystemfilterdrivrutin?

En filterdrivrutin för Windows filsystem anropas under varje filsystems I/O-operation (skapa, läs, skriv, byt namn, etc.). Därför kan den ändra beteendet hos filsystemet. Filsystemfilterdrivrutiner är jämförbara med äldre drivrutiner, även om de kräver flera speciella utvecklingssteg. Säkerhet, säkerhetskopiering, ögonblicksbild och antivirusprogram använder sådana drivrutiner.

Utveckla en enkel filsystemfilterdrivrutin

Innan utvecklingen påbörjas

Först, för att utveckla en filsystemfilterdrivrutin, behöver du IFS- eller WDK-kit från Microsofts webbplats . Du måste också ställa in miljövariabeln %WINDDK% till sökvägen där du har installerat WDK/IFS-kitet.

Uppmärksamhet:Även det minsta felet i en filsystemdrivrutin kan orsaka BSOD eller systeminstabilitet.

main.c

Drivrutin för filsystemfilter

Det är en åtkomstpunkt för alla drivrutiner, inklusive för filsystemfilterdrivrutiner. Det första vi bör göra är att lagra DriverObject som en global variabel (vi kommer att använda den senare):

// // Globala data PDRIVER_OBJECT g_fsFilterDriverObject = NULL; // // DriverEntry - Ingångspunkt för drivrutinen NTSTATUS DriverEntry(__inout PDRIVER_OBJECT DriverObject, __in PUNICODE_STRING RegistryPath) ( NTSTATUS status = STATUS_SUCCESS; ULONG i = 0; //ASSERT(/ FALSE); // Detta kommer att bryta / Lagra vårt drivrutinsobjekt. // g_fsFilterDriverObject = DriverObject; ... )

Ställa in IRP-sändningstabellen

Nästa steg i utvecklingen av en filsystemfilterdrivrutin är att fylla IRP-avsändningstabellen med funktionspekare till IRP-hanterare. Vi kommer att ha en generisk pass-through IRP-hanterare i vår filers drivrutin som skickar förfrågningar vidare. Vi kommer också att behöva en hanterare för IRP_MJ_CREATE för att hämta namnen på öppna filer. Vi kommer att överväga implementeringen av IRP-hanterare senare.

// // DriverEntry - Ingångspunkt för drivrutinen NTSTATUS DriverEntry(__inout PDRIVER_OBJECT DriverObject, __i PUNICODE_STRING RegistryPath) ( ... // // Initiera sändningstabellen för drivrutinsobjektet. // för (i = 0; i<= IRP_MJ_MAXIMUM_FUNCTION; ++i) { DriverObject->MajorFunction[i] = FsFilterDispatchPassThrough; ) DriverObject->MajorFunction = FsFilterDispatchCreate; ...)

Inställning av snabb I/O-sändningstabell

Filsystemfilterdrivrutinen kräver snabb I/O-sändningstabell. Att inte ställa in den här tabellen skulle leda till att systemet kraschar. Snabb I/O är ett annat sätt att initiera I/O-operationer som är snabbare än IRP. Snabba I/O-operationer är alltid synkrona. Om den snabba I/O-hanteraren returnerar FALSE, kan vi inte använda snabb I/O. I I detta fall kommer IRP att skapas.

// // Globala data FAST_IO_DISPATCH g_fastIoDispatch = ( sizeof(FAST_IO_DISPATCH), FsFilterFastIoCheckIfPossible, ... ); // // DriverEntry - Ingångspunkt för drivrutinen NTSTATUS DriverEntry(__inout PDRIVER_OBJECT DriverObject, __in PUNICODE_STRING RegistryPath) ( ... // // Ställ in fast-io-utskickningstabell. // DriverObject->FastIoDispatch =) &g_fastch;

Registrera aviseringar om filsystemändringar

När vi utvecklar en filsystemfilterdrivrutin bör vi registrera ett meddelande om filsystemändringar. Det är avgörande att spåra om filsystemet aktiveras eller inaktiveras för att kunna bifoga/ta bort vårt filsystems filterdrivrutin. Nedan kan du se hur du spårar filsystemändringar.

// // DriverEntry - Ingångspunkt för drivrutinen NTSTATUS DriverEntry(__inout PDRIVER_OBJECT DriverObject, __i PUNICODE_STRING RegistryPath) ( ... // // Registrerad återuppringningsrutin för filsystemändringar. // status = IoRegisterFsRegistrationChange, ifCallbbackO); (!NT_SUCCESS(status)) (returstatus; ) ... )

Ställa in rutin för urladdning av drivrutinen

Den sista delen av filsystemets drivrutininitiering är att ställa in en urladdningsrutin. Denna rutin hjälper dig att ladda och ladda ur filsystemets filterdrivrutin utan att behöva starta om. Icke desto mindre blir den här drivrutinen verkligen urladdningsbar för felsökningsändamål, eftersom det är omöjligt att ladda ur filsystemfilter på ett säkert sätt. Det rekommenderas inte att utföra urladdning i produktionskod.

// // DriverEntry - Ingångspunkt för drivrutinen NTSTATUS DriverEntry(__inout PDRIVER_OBJECT DriverObject, __i PUNICODE_STRING RegistryPath) ( ... // // Ställ in rutin för bortladdning av drivrutinen (endast felsökningsändamål). // DriverObject->DriverUnload = FsFilter; return; STATUS_SUCCESS; )

Implementering av urladdning av drivrutin för filsystem

Rutinen för urladdning av föraren rensar resurser och omallokerar dem. Nästa steg i utvecklingen av filsystemdrivrutiner är att avregistrera meddelandet om filsystemändringar.

// // Unload rutin VOID FsFilterUnload(__i PDRIVER_OBJECT DriverObject) ( ... // // Oregistrerad återuppringningsrutin för filsystemändringar. // IoUnregisterFsRegistrationChange(DriverObject, FsFilterNotificationCallback); ... )

När du har avregistrerat meddelandet bör du gå igenom skapade enheter och ta bort och ta bort dem. Vänta sedan i fem sekunder tills alla utestående IRPs har slutförts. Observera att detta endast är en felsökningslösning. Det fungerar i det större antalet fall, men det finns ingen garanti för att det kommer att fungera i dem alla.

// // Unload rutin VOID FsFilterUnload(__i PDRIVER_OBJECT DriverObject) ( ... för (;;) ( IoEnumerateDeviceObjectList(DriverObject, devList, sizeof(devList), &numDevices); if (0 == numDevices =) ) (Devices; min(antalDevices, RTL_NUMBER_OF(devList)); för (i = 0; i< numDevices; ++i) { FsFilterDetachFromDevice(devList[i]); ObDereferenceObject(devList[i]); } KeDelayExecutionThread(KernelMode, FALSE, &interval); } }

IrpDispatch.c

Skicka genomkoppling

Det enda ansvaret för denna IRP-hanterare är att skicka förfrågningar vidare till nästa förare. Nästa drivrutinsobjekt lagras i vårt enhetstillägg.

// // PassThrough IRP-hanterare NTSTATUS FsFilterDispatchPassThrough(__in PDEVICE_OBJECT DeviceObject, __i PIRP Irp) ( PFSFILTER_DEVICE_EXTENSION pDevExt = (PFSFILTER_DEVICE_EXTENSION)Device ILocationrCptenExtension; (Irp); returnera IoCall Driver(pDevExt->AttachedToDeviceObject, Irp); )

Skicka skapa

Varje filskapande operation anropar denna IRP-hanterare. Efter att ha tagit ett filnamn från PFILE_OBJECT , skriver vi ut det till felsökningsutgången. Efter det anropar vi pass-through-hanteraren som vi "har beskrivit ovan. Lägg märke till att ett giltigt filnamn endast finns i PFILE_OBJECT tills filen skapande är klar! Det finns även relativa öppningar och öppningar av id. I tredje- partiresurser kan du hitta mer information om att hämta filnamn i dessa fall.

// // IRP_MJ_CREATE IRP-hanterare NTSTATUS FsFilterDispatchCreate(__in PDEVICE_OBJECT DeviceObject, __i PIRP Irp) ( PFILE_OBJECT pFileObject = IoGetCurrentIrpStackLocation(IrpFibtO); bject->Filnamn); returnera FsFil terDispatchPassThrough(DeviceObject , Irp);)

FastIo.c

Eftersom inte alla snabba I/O-rutiner bör implementeras av det underliggande filsystemet, måste vi testa giltigheten av den snabba I/O-utskickningstabellen för nästa drivrutin med hjälp av följande makro:

// Makro för att testa om FAST_IO_DISPATCH-hanteringsrutinen är giltig #define VALID_FAST_IO_DISPATCH_HANDLER(_FastIoDispatchPtr, _FieldName) \ (((_FastIoDispatchPtr) != NULL) && \ (((>FastIoDispatchPtr)\(_FastIoDispatch)\(_FastIoDispatch) (FIELD_OFFSET (FAST_IO_DISPATCH, _Fältnamn) + sizeof(void *))) && \ ((_FastIoDispatchPtr)->_FieldName != NULL))

Snabb I/O-genomföring

Till skillnad från IRP-förfrågningar kräver det en enorm mängd kod för att gå igenom snabb-IO-förfrågningar eftersom varje snabb I/O-funktion har sin egen uppsättning parametrar. Nedan hittar du ett exempel på en vanlig pass-through-funktion:

BOOLEAN FsFilterFastIoQueryBasicInfo(__in PFILE_OBJECT FileObject, __in BOOLEAN Wait, __out PFILE_BASIC_INFORMATION Buffer, __out PIO_STATUS_BLOCK IoStatus, __in PDEVICE_OBJECT Device/ /JOBJECT Device/ /JObject_ of IPDEVICE_OBJECT Device/ /JOBject_ ECT nextDeviceObject = ((PFSFILTER_DEVICE_EXTENSION) DeviceObject- >DeviceExtension)->AttachedToDeviceObject; PFAST_IO_DISPATCH fastIoDispatch = nextDeviceObject->DriverObject ->FastIoDispatch; if (VALID_FAST_IO_DISPATCH_HANDLER(fastIoDispatch, FastIoDispatch, FastIoIFastery)Bas return BasicInfo)(FileObject, Wait, Buffer, IoStatus, nextDeviceObject); ) returnera FALSK ;)

Snabb I/O-koppla enhet

Lossa enheten är en specifik snabb I/O-förfrågan som vi bör hantera utan att anropa nästa förare. Vi bör ta bort vår filterenhet efter att ha kopplat bort den från filsystemets enhetsstacken. Nedan hittar du exempelkod som visar hur du enkelt hanterar denna begäran:

VOID FsFilterFastIoDetachDevice(__i PDEVICE_OBJECT SourceDevice, __i PDEVICE_OBJECT TargetDevice) ( // // Lossa från filsystemets volymenhetsobjekt. // IoDetachDevice(TargetDevice); IoDeleteDevice()SourceDevice);

Notification.c

det gemensamma filsystemet består av kontrollenheter och volymenheter. Volymenheter är anslutna till lagringsenhetsstacken. En kontrollenhet är registrerad som ett filsystem.

En callback anropas för alla aktiva filsystem varje gång ett filsystem antingen registrerar eller avregistrerar sig som aktivt. Detta är ett bra ställe för att bifoga eller ta bort vår filsystemfilterenhet. När filsystemet aktiverar sig själv ansluter vi till dess kontrollenhet (om den inte redan är ansluten) och räknar upp dess volymenheter och ansluter till dem också. När vi inaktiverar filsystemet undersöker vi dess kontrollenhetsstack, hittar vår enhet och kopplar bort den. Koppling från filsystemvolymenheter utförs i FsFilterFastIoDetachDevice-rutinen som vi beskrev tidigare.

// // Denna rutin anropas när ett filsystem antingen har registrerat sig eller // avregistrerat sig som ett aktivt filsystem. VOID FsFilterNotificationCallback(__i PDEVICE_OBJECT DeviceObject, __i BOOLEAN FsActive) ( // // Hantera bifogning/lossning från det givna filsystemet. // if (FsActive) ( FsFilterAttachToFileSystemDevice(DeviceObject)DeviceObject(DeviceObject)DeviceObject(FsFilterDetachelseSystem (FsFilterDetachelsesystem)); ject); ) )

AttachDetach.c

Den här filen innehåller hjälprutiner för att bifoga, ta bort och kontrollera om vårt filter redan är bifogat.

Fästa

För att bifoga måste vi anropa IoCreateDevice för att skapa ett nytt enhetsobjekt med enhetstillägg, och sedan sprida enhetsobjektflaggor från enhetsobjektet vi försöker koppla till (DO_BUFFERED_IO, DO_DIRECT_IO, FILE_DEVICE_SECURE_OPEN). Sedan kallar vi IoAttachDeviceToDeviceStackSafe i en loop med fördröjning vid fel. Vår bifogade begäran kan misslyckas om enhetsobjektet inte har initialiserats färdigt. Detta kan hända om vi försöker montera endast volymfiltret. Efter att ha bifogat sparar vi enhetsobjektet "fäst till" i enhetstillägget och rensar flaggan DO_DEVICE_INITIALIZING. Nedan kan du se enhetstillägget:

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

Lossande

Att lossa är ganska enkelt. Från enhetstillägget får vi enheten som vi kopplade till och sedan kallar IoDetachDevice och IoDeleteDevice.

void FsFilterDetachFromDevice(__in PDEVICE_OBJECT DeviceObject) ( PFSFILTER_DEVICE_EXTENSION pDevExt = (PFSFILTER_DEVICE_EXTENSION) DeviceObject->DeviceExtension; IoDetachDevice(pAttavExtension-Device(pAttavExtO)); Objekt); )

Kontrollerar om vår enhet är ansluten

För att kontrollera om vi är anslutna till en enhet eller inte, måste vi iterera genom enhetsstacken med IoGetAttachedDeviceReference och IoGetLowerDeviceObject, leta sedan efter vår enhet där. Vi kan identifiera vår enhet genom att jämföra enhetsdrivrutinsobjektet med det för vår drivrutin ett (g_fsFilterDriverObject).

// // Övrigt BOOLEAN FsFilterIsMyDeviceObject(__i PDEVICE_OBJECT DeviceObject) ( returnera DeviceObject->DriverObject == g_fsFilterDriverObject; )

Källor och makefile

Verktyget som bygger drivrutinen, använder källor och makefile-filer. Dessa filer innehåller projektinställningar och källfilnamn.

Innehållet i källfilen:

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

Makefilen är standard:

Inkludera $(NTMAKEENV)\makefile.def

MSVC makefile project build kommandoraden är:

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

Hur man installerar en drivrutin för filsystemfilter

SC.EXE översikt

Vi kommer att använda sc.exe (sc - service control) för att hantera vår drivrutin. Vi kan använda det här kommandoradsverktyget för att fråga eller ändra databasen för installerade tjänster. Den levereras med Windows XP och högre, eller så kan du hitta den i Windows SDK/DDK.

Installera drivrutinen för filsystemets filter

För att installera drivrutinen för filsystemets filter, ring:

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

Detta kommer att skapa en ny tjänstpost med namnet FsFilter med en tjänsttyp av filsystem och en binär sökväg av c:\FsFilter.sys.

Starta drivrutinen för filsystemets filter

För att starta filsystemets filterdrivrutin, ring:

Sc starta FsFilter

Tjänsten FsFilter kommer att startas.

Stoppa drivrutinen för filsystemet

För att stoppa filsystemets filterdrivrutin, ring:

Sc stoppa FsFilter

Tjänsten FsFilter kommer att stoppas.

Avinstallera drivrutinen för filsystemets filter

För att avinstallera filsystemets filterdrivrutin, ring:

Sc ta bort FsFilter

Detta kommando instruerar tjänstehanteraren att ta bort tjänsten med namnet FsFilter.

Resulterande manus

Vi kan lägga alla dessa kommandon i en enda batchfil för att göra drivrutinstestningen enklare. Nedan finns innehållet i vår Install.cmd kommandofil:

Sc skapa FsFilter typ= filesys binPath= c:\FsFilter.sys sc starta FsFilter paus sc stoppa FsFilter sc radera FsFilter paus

Köra ett exempel på filsystemfilterdrivrutinen

Nu ska vi visa hur filsystemfiltret fungerar. För detta ändamål kommer vi att använda Sysinternals DebugView för Windows för att övervaka felsökningsutdata samt OSR Device Tree för att visa enheter och drivrutiner.

Låt oss först bygga drivrutinen. Efter det kopierar vi den resulterande filen FsFilter.sys och Install.cmd-skriptet till roten på C-enheten.

Filsystemfilterdrivrutinen och installationsskriptet på C-enheten.

Nu ska vi köra Install.cmd, som installerar och startar filsystemdrivrutinen, och sedan väntar på användarinmatning.

Filsystemets filterdrivrutin har installerats och startats.

Nu bör vi starta DebugView-verktyget.

Äntligen kan vi se vilka filer som öppnades! Det betyder att vårt filter fungerar. Nu bör vi köra enhetsträdsverktyget och hitta vår drivrutin där.

Vår filterdrivrutin i enhetsträdet.

Det finns olika enheter skapade av vår förare. Låt oss öppna NTFS-drivrutinen och ta en titt på enhetsträdet:

Vårt filter är kopplat till NTFS.

Vi "bifogade igen nu. Låt oss ta en titt på andra filsystem:

Vårt filter är också kopplat till andra filsystem.

Slutligen kan vi trycka på valfri tangent för att fortsätta vårt installationsskript, stoppa och avinstallera drivrutinen.

Vår filsystemfilterdrivrutin har stoppats och avinstallerats.

Vi kan trycka på F5 för att uppdatera enhetsträdlistan:

Våra filterenheter finns inte längre i enhetsträdet.

Vår filsystemfilterdrivrutin har försvunnit och systemet körs precis som tidigare.

Blir mer avancerad

Filsystemets filterdrivrutin som beskrivs ovan är mycket enkel och saknar ett antal funktioner som krävs för en vanlig drivrutin. Tanken med den här artikeln var att visa det enklaste sättet att skapa en filsystemfilterdrivrutin, vilket är anledningen till att vi beskrev denna enkla och lättförståeliga utvecklingsprocess. Du kan skriva en egen IRP_MJ_FILE_SYSTEM_CONTROL-hanterare för att spåra nya volymer.

Och utan att vänta på fortsättningen som du lovade How, bestämde jag mig för att installera detta antivirusprogram på min hemdator på egen hand, men jag stötte på några oklarheter. Installationsprogrammet laddades ner på den officiella webbplatsen www.avast.com/ru och installerade det sedan på din hemdator det här programmet, och det visar sig att det fortfarande behöver registreras. Jag gjorde det, nu kan jag inte lista ut inställningarna. Specifikt är jag intresserad av Sandbox-funktionen eller sandlådan, många pratar om det nu, det här är en slags virtuell miljö där du kan köra vilket misstänkt program som helst utan rädsla för att infektera hela systemet om något händer. Så i inställningarna är det, men jag förstår inte om det fungerar eller inte. Och jag kan fortfarande inte hitta någon användbar funktion, liksom Scan on boot, säger de att detta är ett mycket bra botemedel mot ransomware-banners och om det är aktiverat utför Avast en skanning startfiler innan du laddar själva Windows. Jag är tacksam för all hjälp. Maksim.

Hur man installerar Avast gratis antivirus

Den här artikeln skrevs som en fortsättning på artikeln Vilket antivirus är bäst, där vi analyserade frågan på vilken princip nästan alla antivirusprodukter, både betalda och gratis, bygger sitt skydd. Hur skiljer de sig från varandra, samt mycket mer, till exempel hur man bäst bygger skyddet av ditt hemdator från virus och vad annat än antivirusprogram att använda för detta. Här kommer vi att överväga frågan om hur man laddar ner och Installera gratis antivirus Avast. Vi kommer att analysera programmets grundläggande inställningar, dess underhåll, skanning efter virus och så vidare.

Obs: Vänner, om du av någon anledning vill ta bort antivirusprogrammet Avast, använd. bra recension betalda och gratis antivirus väntar på dig i vår artikel ""

I grund och botten är skyddet för vårt Avast antivirusprogram byggt på ett mycket kraftfullt Resident Protection. Detta sker med hjälp av säregna medel för skärmar. Programmoduler är med andra ord ständigt närvarande i random access minne och håll koll på allt som händer på datorn.
Till exempel är filsystemskärmen det huvudsakliga skyddet och övervakar alla operationer som sker med dina filer. Brandvägg - övervakar nätverksaktivitet och stoppar virus som försöker ta sig igenom Internet. Mailskärm - håll utkik e-post och kontrollerar naturligtvis alla bokstäver som kommer till din dator. Ett annat Avast-program har en ganska avancerad heuristisk analys, effektiv mot rootkits.

Här är ett gratis antivirus för dig!

Innan du installerar Avast! gratis antivirus, bör du veta att du bara kan använda den hemma. Du kan ladda ner antivirusprogrammet på webbplatsen www.avast.com. Om du har problem med att ladda ner Avast antivirus, ladda ner det på Avsofts officiella distributörssida på:

www.avsoft.ru/avast/Free_Avast_home_edition_download.htm
Tja, vi kommer att ladda ner vårt antivirus på den officiella webbplatsen
www.avast.com/ru-ru/free-antivirus-download. Välj Gratis antivirus och klicka på ladda ner,

i fönstret Välkommen Avast Free Antivirus användare som visas, klicka på knappen Ladda ner nu.

Nedladdat, kör programmets installationsprogram. Sedan den sjunde versionen finns det ett val mellan en normal installation och installation som ett andra antivirusprogram. Om du har Kaspersky installerat som det första antivirusprogrammet är en konflikt möjlig.

Du kan välja expressinstallation.

Om du behöver Google webbläsare Chrome, markera rutan. Installationen sker inom en eller två minuter.
Installationen är klar. Vi är redo.

Många människor, som har kommit in i programmets huvudfönster, är förvånade över att AVAST antivirus måste registreras, men så är faktiskt fallet. Registreringen är mycket enkel. Klicka för att registrera dig.

Välj Basic Protection AVAST! gratis antivirus.

Fyll i ett mycket enkelt formulär. Klicka för att registrera dig för en gratis licens.

Vår version av antiviruset är registrerad på Brevlåda kommer att få ett liknande brev.

Vi erbjuds omedelbart att tillfälligt byta till versionen av Internet Security i 20 dagar, efter denna period kan du om du vill återgå till Fri eller köp en version av Internet Security. Vad du än har att jämföra med, använd AVAST-versionen först! Gratis antivirus, du kan byta till en betalversion när som helst. Klicka på krysset i det övre högra hörnet och stäng detta fönster.

Efter 365 dagar måste du registrera dig igen och det är allt. Som du kan se är det i princip inte svårt att ladda ner och installera det kostnadsfria antivirusprogrammet Avast, och det är inte svårt att registrera det.

Man kan säga att allt är väldigt bekvämt och förståeligt, även en nybörjare kommer att förstå hela ledningen. Nu vänner uppmärksamhet, som standard är programmet konfigurerat mycket bra, men det finns några inställningar värda din uppmärksamhet. Avast uppdateras automatiskt, vanligtvis direkt efter att datorn slagits på och operativsystemet startat.



Om du vill kan du när som helst kontrollera om det finns uppdateringar på den officiella webbplatsen. Välj Program för underhållsuppdatering. Du kan också uppdatera motorn för virussökning och upptäckt.

Det finns flera sätt att skanna din dator efter virus. Klicka på knappen Skanna din dator. Och välj till exempel det alternativ du behöver
Express Scan- autorun-objekt och alla delar av partitionen med operativ system där virus vanligtvis häckar.
Fullständig genomsökning dator(inga kommentarer)
Skanning av flyttbara media- dina flashenheter, USB-hårddiskar och så vidare skannas
Välj en mapp att skanna, väljer du mappen för att söka efter virus.

Eller så kan du högerklicka på valfri mapp och välja Skanna från rullgardinsmenyn så kommer den här mappen att genomsökas efter virus.

Skanna vid OS-start. Om du till exempel måste surfa på Internet under en längre tid kan du aktivera kontroll av startfiler i förväg och vid nästa systemstart. Avast kommer att kontrollera alla filer relaterade till den normala uppstarten av systemet, förbi Windows själv, jag personligen har inte märkt en sådan funktion någonstans förutom Avast. Ett mycket bra verktyg som hjälper mot ransomware-banners, dock inte i 100% av fallen.

Avast antivirusfönster, före huvudstarten av Windows.

Automatisk sandlåda (" AutoSandbox"). Kör misstänkta applikationer i en virtuell miljö som är naturligt skild från det normala systemet. I vår gratisversion av AVAST! Gratis antivirus, bara de applikationer som Avast själva anser vara misstänkta kommer att starta, om programmet visar sig vara skadligt stängs programfönstret helt enkelt. Inbetald AVAST-versioner! Pro Antivirus och AVAST! Internet Security, du kommer att kunna köra vilken applikation som helst i den här miljön som du vill.

Blockera vissa webbplatser efter deras adress. Du kan använda den här funktionen som en föräldrakontroll.

Allt annat finns tillgängligt i fönstret Live-skärmar och fönster inställningar. Vi kan säga att standardinställningarna ska passa den genomsnittliga användaren, om något inte är klart, skriv.

Windows Filesystem Filter Manager eller Windows File System Filter Manager är processen som installeras med systemfiltillägget fltmgr.sys. Den här processen är en kärnkomponent i ditt Windows-operativsystem och bör inte avslutas eller förbjudas från att köras varje gång Windows laddas under uppstart. Filen har huvudansvaret att se till att alla filer som kommer att installeras på datorn lagras i deras rättmätiga kataloger. Om den här filen saknas eller är korrupt kommer Blue Screen of Death troligen att dyka upp; som användarna upplevt. I andra fall kommer Windows inte att laddas helt. Enbart omstart löser inte problemet om filen verkligen saknas eller inte kan hittas vid start. Felet kommer att fortsätta visas tills problemet har åtgärdats. Filen fltmgr.sys som är kompatibel med Windows XP eller Windows 7 har en ungefärlig storlek på 124 800 byte. Filen lagras i systemkatalogen i ditt operativsystem.

Hur kan jag stoppa fltmgr.sys och bör jag?

De flesta icke-systemprocesser som körs kan stoppas eftersom de inte är involverade i att köra ditt operativsystem. fltmgr.sys. används av Microsoft Windows, om du stänger av fltmgr.sys, kommer den sannolikt att starta igen vid ett senare tillfälle, antingen efter att du har startat om datorn eller efter att ett program startar. att stanna fltmgr.sys, permanent måste du avinstallera programmet som kör den här processen, vilket i det här fallet är Microsoft Windows, från ditt system.

Efter avinstallation av applikationer är det en bra idé att skanna ditt Windows-register efter eventuella överblivna spår av applikationer. Registry Reviver av ReviverSoft är ett utmärkt verktyg för att göra detta.

Är detta ett virus eller annat säkerhetsproblem?

ReviverSoft säkerhetsutslag

Vänligen granska fltmgr.sys och skicka mig ett meddelande när det har gjort det
granskats.

Vad är en process och hur påverkar den min dator?

En process vanligtvis en del av en installerad applikation som t.ex Microsoft Windows, eller ditt operativsystem som är ansvarigt för att köra funktioner i det programmet. Vissa applikationer kräver att de har processer igång hela tiden så att de kan göra saker som att söka efter uppdateringar eller meddela dig när du får ett snabbmeddelande. Vissa dåligt skrivna applikationer har många processer som körs som kanske inte krävs och tar upp värdefull processorkraft i din dator.

Är fltmgr.sys känt för att vara dåligt för min dators prestanda?

Vi har inte fått några klagomål om att denna process har en större inverkan än normalt på datorns prestanda. Om du har haft dåliga erfarenheter av det vänligen meddela oss i en kommentar nedan så kommer vi att undersöka erfarenheterna ytterligare.