2016-11-22 2 views
3

Ich arbeite an einem Projekt, um Windows-Schreibanforderungen von einer Festplatte in eine andere in Echtzeit asynchron zu replizieren.Windows Festplatte Echtzeit Replikation

Ich bin neu in Kernel-Modus Treiberentwicklung unter Windows, was ich im Auge habe, ist IO-Anforderungen zu überwachen.

Ich suchte viel, aber dieser Bereich ist nicht dokumentiert, wie es sollte.

habe ich meine Suche und fand 4 führt (aber nicht von ihnen ist sicher die beste Wahl für den Anfang)

  • IRP

IO-Request-Pakete von Windows-Treiber zur Kommunikation genutzt wird zwischen ihnen und dem Betriebssystem, aber werde ich in der Lage sein, den vom Festplattentreiber verwendeten IRP zu überwachen? und was ist mit der Sicherheit?

  • Windows-Filtertreiber

gibt es eine Menge von System-Filtertreiber Ebenen von oben nach unten, die man verwendet werden soll? und kann ich die vom Festplattentreiber verwendeten IOs filtern?

  • IO Haken

diese Technik durch Fenster Antiviren-Programmen verwendet wird, um die IOs zu einzuhaken und die Dateien überprüfen. Ist es zuverlässig in meiner Situation zu verwenden?

  • Kernel Ereignisverfolgung

Verwendet von Microsoft Diskmon Tool Festplattenaktivität zu überwachen.

Das Problem hier ist, dass ich nicht weiß, wo ich anfangen soll und was die beste Option ist, um mit in Bezug auf Leistung und Sicherheit zu beginnen.

+1

Was sind Ihre Sicherheitsbedenken? Jeder andere Kernel-Modus-Code kann alles tun, was er möchte; Kein Benutzermoduscode kann Sie berühren. –

+0

Ich meine Sicherheitsbedenken bezüglich anderer Treiber, kann ich IO-Anfragen von Festplattentreibern überwachen? –

+1

Nannte RAID1. Niemand kann * zuverlässig * und wettbewerbsfähig gegen eine [19-Dollar-Lösung] programmieren (http://www.newegg.com/Product/Product.aspx?Item=N82E16815124152). –

Antwort

1

Sie zunächst perfektionieren müssen windows Storage, Volumes, and File System Stacks verstehen und Device Tree

bestimmte verwenden, welches Gerät Sie Filter benötigen, und als Upperfilter oder Lowfilter. Sie müssen wirklich replizieren Festplatte, oder sagen Partition (Datenträger) auf Festplatte oder Dateisysteme lesen/schreiben?

zu Gerät befestigen Sie selbst in der Registry registrieren können, etwa für Scheibenfilter - unter HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4d36e967-e325-11ce-bfc1-08002be10318} in UpperFilters oder LowerFilters

lesen this Speicherstapel Beispiel Ihren Platz bei (4) (LowFilter ist - werden Sie Filter sein IRP_MJ_SCSI für Schreib-/Lese) oder (7) (Upperfilter - Sie Filter IRP_MJ_READ/IRP_MJ_WRITE für Lese-/Schreib sein) Fahrer muss AddDevice in Treiber sein oder direkt WDM (Register) oder verwenden KMDF (Shell-Framework)

eine andere Lösung verwenden IoRegisterPlugPlayNotification (EventCategoryDeviceInterfaceChange, & GUID_DEVINTERFACE_DISK) für befestigen Platten FDO - hier immer Sie wünschen, diese Art von Frage Upperfilter

und die beste Ressource, Beratung - ist osronline - NTFSD oder NTDEV Forum

+0

Vielen Dank für Ihre Referenzen, die sie wirklich hilfreich aussehen, in Bezug auf Ihre Frage, muss ich die ganze Festplatte auf der Block-Ebene –

+0

@AhmedKato replizieren - so brauchen Sie - https://msdn.microsoft.com/en-us/windows/ Hardware/Treiber/Speicher/Speicher-Filter-Treiber. und bestimmtes niedriges oder hohes Filter - 'Ein niedrigeres SFD überwacht SRBs und/oder IRPs, die von einem Speicherklassentreiber ausgegeben werden ', Ein übergeordneter Speicherfiltertreiber (SFD) fängt IRPs von Benutzeranwendungen ab – RbMm