Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Festplatte überwachen (https://www.delphipraxis.net/68323-festplatte-ueberwachen.html)

gsh 28. Apr 2006 00:08


Festplatte überwachen
 
Hi DPler

Ich hab mal eine Frage wie kann ich die Festplatte überwachen? D.h. Wenn ein Programm eine Datei erstellt/ändert bzw. zugreift/liest möchte ich das mein Programm bevor das passiert und nachdem das passiert ist benachrichtigt wird.

Kleines Bsp.: FremdesProg will auf eine Datei zugreifen, MeinProg wird benachrichtigt (FremdesProg muss warten), MeinProg scannt die Datei und sagt dann ok, erst dann kann das FremdeProg auf die datei zugreifen (lesen, schreiben), dann kann das FremdeProg alles mit der datei tun was es will, bis das FremdeProg die Datei schliesst, dann muss ich wieder benachrichtigt werden.


So ich hoffe ihr habt mich verstanden :mrgreen:

Mackhack 28. Apr 2006 03:32

Re: Festplatte überwachen
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hi,

ich habe mal ein Tool geschrieben mit hilfe von Muetze1 das alle Files die ausgewählt wurden und in einer ListBox stehen oder so überwacht und dann wenn etwas verändert wurde in einen anderen Ordner kopiert. Hier mal das Programm. Vlt. hilft es dir ja!

Luckie 28. Apr 2006 12:36

Re: Festplatte überwachen
 
Zitat:

Zitat von gsh
Ich hab mal eine Frage wie kann ich die Festplatte überwachen?

Mit einem Dateisystemfiltertreiber.

himitsu 28. Apr 2006 12:47

Re: Festplatte überwachen
 
Oder alle Befehle hooken, mit welchen man auf Dateien zugreifen kann.

z.B.
CreateFile und CloseFile.

Diese beiden (natürlich gibt's auch noch andere) so umleiten, daß zuerst deine Funktionen zum Prüfen aufgerufen werden und diese anschließend CreateFile und CloseFile aufrufen ... das andere Programm müßte dann ja zwangsläufig solange warten, bis deine Bearbeitung fertig ist?

brechi 28. Apr 2006 13:29

Re: Festplatte überwachen
 
Liste der Anhänge anzeigen (Anzahl: 1)
Ich hatte da mal vor längerer Zeit was programmiert

zuerst brauchst du
http://cvs.sourceforge.net/viewcvs.p...allCollection/

Alternativ einen (Ring0) ntoskrnl.NtCreateFile hook :)

CG2003 28. Apr 2006 13:30

Re: Festplatte überwachen
 
Zitat:

Zitat von brechi
Ich hatte da mal vor längerer Zeit was programmiert

zuerst brauchst du
http://cvs.sourceforge.net/viewcvs.p...allCollection/

Alternativ einen (Ring0) ntoskrnl.NtCreateFile hook :)

Kann man das auch unter BDS2006 bzw. Delphi 2006 compilieren? Denn der obige Link geht nur bis D7.

gsh 28. Apr 2006 22:10

Re: Festplatte überwachen
 
Zitat:

Zitat von Mackhack
Hier mal das Programm. Vlt. hilft es dir ja!

Danke ich werds mir mal anschauen

//Edit: hab mir jetzt mal kurz dein Prog. angeschaut. Wenn ich des richtig gesehen hab dann tust du einfach bei einer bestimmten dateiliste immer wieder die größe auf gleichheit überprüfen.
Ich möchte aber die ganze Festplatte überwachen. Außerdem muss des fremdprog. dabei nicht warten und und und, also leider nichts brauchbares für mich. trotzdem danke

Zitat:

Zitat von Luckie
Mit einem Dateisystemfiltertreiber.

Klingt ja interessant :-D Nur was ist das? :stupid:
Bzw. was kann ich damit genau machen bzw. wie mache ich des?


Zitat:

Zitat von himitsu
Oder alle Befehle hooken, mit welchen man auf Dateien zugreifen kann.

Des klingt auch sehr gut, nur wie? :stupid:

Luckie 28. Apr 2006 22:33

Re: Festplatte überwachen
 
Mit dem Treiber klinkst du dich zwischen Windows und dem tatsächlichen Schreiben auf doe festplatte ein. Ist aber nicht trivial. Vorraussetzung sind detailierte Kenntniss ein C, der Treiberentwicklung, des VC und des DDK. Mit Delphi hast du keine Chance, da was zu erreichen.

gsh 28. Apr 2006 23:16

Re: Festplatte überwachen
 
Zitat:

Zitat von Luckie
Mit dem Treiber klinkst du dich zwischen Windows und dem tatsächlichen Schreiben auf doe festplatte ein. Ist aber nicht trivial. Vorraussetzung sind detailierte Kenntniss ein C, der Treiberentwicklung, des VC und des DDK. Mit Delphi hast du keine Chance, da was zu erreichen.

ok ich glaube der Hook ist dann viel besser
weil ich kann nur ein bisschen C aber an Treiberentwicklung ist da nicht zu denken

Also weiss jemand wie des mit dem Hook geht?

Daniel G 29. Apr 2006 00:54

Re: Festplatte überwachen
 
Zitat:

Zitat von gsh
weil ich kann nur ein bisschen C aber an Treiberentwicklung ist da nicht zu denken

Beim DDK ist schon ein Beispiel für einen Dateisystemtreiber dabei. Leider gibt es das DDK offiziell nicht mehr kostenlos.

brechi 29. Apr 2006 01:11

Re: Festplatte überwachen
 
Ein Beispiel für einen USerMode hook (NtCreateFile) hab ich weiter oben schon gepostet.
Ein Treiber wäre dann auch nur ein Kernelmode hook. Man kann auch ohne weiteres mit Delphi so einen Kernel hook machen, und soagr Treiber programmieren.

Luckie 29. Apr 2006 01:13

Re: Festplatte überwachen
 
Zitat:

Zitat von brechi
und soagr Treiber programmieren.

Wie das? Nico hat mal bezüglich Treiberprogrammierung mit Delphi folgendes geschrieben: http://www.michael-puff.de/Developer...enDelphi.shtml

brechi 29. Apr 2006 01:24

Re: Festplatte überwachen
 
Nur mit Delphi gehts nicht, aber in Pascal mit Delphi und VisualStudio installeirt schon. (bzw einfach die richtigen Compiler)
Nico ging ja nur davon aus, dass es mit Delphi alleine nicht geht, sollte er gemeint haben, dass man in Pascal keinen Treiber programmieren kann hat er halt unrecht.

Delphi-Quellcode:
//Here the simplest system driver example on pascal (must be compiled with Delphi 3 compiler)

unit Driver;

interface

function DriverEntry(DriverObject, RegistryPath: pointer): integer; stdcall;

implementation

function DbgPrint(Str: PChar): cardinal; cdecl; external 'ntoskrnl.exe' name '_DbgPrint';

function DriverEntry(DriverObject, RegistryPath: pointer): integer;
begin
  DbgPrint('Hello World!');
  Result := -1;
end;

end.

//And make file to compile and link this
//dcc32.exe -JP -$A-,B-,C-,D-,G-,H-,I-,J-,L-,M-,O+,P-,Q-,R-,T-,U-,V-,W+,X+,Y - Driver.pas

//linker from MSVC

//link.exe /DRIVER /ALIGN:32 /BASE:0x10000 /SUBSYSTEM:NATIVE /FORCE:UNRESOLVED /ENTRY:DriverEntry$qqspvt1 Driver.obj ntoskrnl.lib /out:Driver.sys
Hier sogar ein Delphi Driver Developement Kit
http://hxdef.org/download/DDDK004.zip

Auch wenn da einige Tricks/Hacks bei sind, funktionieren sollte es ^^

gsh 29. Apr 2006 14:34

Re: Festplatte überwachen
 
ahm also des mit dem treiber ist eher nichts für mich also bitte *back to topic*

@brechi: sry, hab des irgendwie übersehen. ich werds mir wenn ich daheim bin mal anschauen

Metal_Snake2 29. Apr 2006 19:07

Re: Festplatte überwachen
 
@brechi: ist es also jetzt doch mögloch mit dem Delphi Driver Developement Kit eien Treiber zu schreiben.
Wenn ich jetzt zum beispiel einen K-Mode-Treiber schreiben will, was muß ich da beachten damit ich es mit meinem Delphi programm nutzen kann. Im prinziep könnte ich diesen http://www.codeproject.com/internet/drvfltip.asp K-Mode-Treiber übersetzen und in Delphi verwenden.

Hast du villeicht mehr solcher nützlichen links zu Treiber mit Pascal?

Christian Seehase 30. Apr 2006 03:18

Re: Festplatte überwachen
 
Moin Metal_Snake2,

damit hier nicht alles durcheinander geht, möchte ich Dich bitten für eigene Fragen auch eigene Threads aufzumachen.
Alternativ könnte man aus Deinem Beitrag auch einen neuen Thread erstellen.
Vielen Dank für Dein Verständnis.

gsh 30. Apr 2006 14:01

Re: Festplatte überwachen
 
ja bitte back to topic, ich brauch des


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:06 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz