Festplattenzugriff loggen

Für allgemeine Fragen zur Programmierung mit PureBasic.
Agent
Beiträge: 296
Registriert: 13.09.2004 11:28
Kontaktdaten:

Festplattenzugriff loggen

Beitrag von Agent »

Hallo PBler.

Ich versuche seit Tagen in den Foren (deutsch und englisch) sowie in der WinAPI-Hilfe was zu finden, wie ich die Festplatten-Aktivitäten loggen kann. Es würde schon langen überhaupt zu wissen, wann geschrieben, bzw gelesen wird. Schön wäre auch viele kb ausgetauscht wird.

Hat da jemand schonmal mit experimentiert? Hab nur was von hooks gelesen. Habe aber kein API dazu gefunden was helfen könnte.

Thx.
Agent_Sasori
It's not a bug - it's a feature!
http://www.StephenKalisch.de | http://www.ria-tec.com | http://www.dirsync.de
Benutzeravatar
Kukulkan
Beiträge: 1066
Registriert: 09.09.2004 07:07
Wohnort: Süddeutschland
Kontaktdaten:

Beitrag von Kukulkan »

Hallo Agent,

Schau mal nach der API ReadDirectoryChangesW() und/oder FindFirstChangeNotificationA(). Damit kannst Du weiterkommen. Die Grösse der Dateien musst Du dann selbst noch auslesen...

Volker
Benutzeravatar
Danilo
-= Anfänger =-
Beiträge: 2284
Registriert: 29.08.2004 03:07

Beitrag von Danilo »

Wenn es auch ein Tool sein kann, dann solltest Du Dir mal
http://www.sysinternals.com/ntw2k/utilities.shtml anschauen.

Da gibt es DiskMon, FileMon, RegMon, PortMon, usw.
Damit kann man ziemlich gut überwachen welches Programm
auf was zugreift.

Auf http://www.internals.com/ gibts noch APISpy, womit man
sehen kann auf welche APIs ein Programm wann und wie
zugreift.

Falls Du also nur mal schnell checken willst auf welche Dateien
ein Programm wann zugreift, könnte FileMon das richtige sein.
cya,
...Danilo
"Ein Genie besteht zu 10% aus Inspiration und zu 90% aus Transpiration" - Max Planck
Agent
Beiträge: 296
Registriert: 13.09.2004 11:28
Kontaktdaten:

Beitrag von Agent »

Hi Jungs.

Danke erstmal für die Antworten. Die Tools kenn ich und nutz ich selbst. Aber ihr kennt das warscheinlich -> Selbst machen.

Daher wage ich mich immer an alles mögliche ran. Denn nur die eigenen Tools sind die besten ;-)

Naja, wir haben ja sonst nix vor oder? *fg*

Werd mal die APIs anschauen, mal sehen ob ich weiter komme, bin aber nicht allzu bewandert mit api...

Trotzdem danke!
Agent_Sasori
It's not a bug - it's a feature!
http://www.StephenKalisch.de | http://www.ria-tec.com | http://www.dirsync.de
Agent
Beiträge: 296
Registriert: 13.09.2004 11:28
Kontaktdaten:

Beitrag von Agent »

So hab mal schnell was gebastelt:

Code: Alles auswählen


OpenWindow(0,100,100,300,300,#PB_Window_SystemMenu,"watch")
If CreateGadgetList(WindowID())
  EditorGadget(1,2,2,296,296)
EndIf

InitKeyboard()

Repeat
  Delay(50)
  ExamineKeyboard()
  driveaction=FindFirstChangeNotification_("d:\",#False,#FILE_NOTIFY_CHANGE_LAST_WRITE)
  If driveaction
    AddGadgetItem(1,-1,Str(driveaction))
    While WindowEvent():Wend
  EndIf
Until WindowEvent()=#PB_Event_CloseWindow Or KeyboardReleased(#PB_Key_Escape)
Wirft permanent Zahlen aus. Stoppt keine Sekunde. Nicht gerade das was ich brauche...Muss mal rausfinden wann das stoppt.
Am liebsten wäre mir was, was mir nicht nur sagt WANN geschriebe/gelesen wird, sondern auch wieviel (bytes, kbytes o.ä)
Agent_Sasori
It's not a bug - it's a feature!
http://www.StephenKalisch.de | http://www.ria-tec.com | http://www.dirsync.de
Agent
Beiträge: 296
Registriert: 13.09.2004 11:28
Kontaktdaten:

Beitrag von Agent »

So. hier meine letzte Modifikation für heute:

Code: Alles auswählen


OpenWindow(0,100,100,300,300,#PB_Window_SystemMenu,"watch")
If CreateGadgetList(WindowID())
  EditorGadget(1,2,2,296,296)
EndIf

InitKeyboard()

driveaction=FindFirstChangeNotification_("d:\",#True,#FILE_NOTIFY_CHANGE_LAST_WRITE)
If driveaction<>-1
  Repeat
    Delay(50)
    ExamineKeyboard()
  
    If WaitForSingleObject_(driveaction, 50)=0
      FindNextChangeNotification_(driveaction)
      AddGadgetItem(1,-1,Str(driveaction))
      While WindowEvent():Wend
    EndIf
  Until WindowEvent()=#PB_Event_CloseWindow Or KeyboardReleased(#PB_Key_Escape)
  FindCloseChangeNotification_(driveaction)
Else
  CloseWindow(0)
  MessageRequester("FEHLER","keine überwachung",0)
EndIf

End
Vielleicht fällt euch nochwas dazu ein, z.b. welches Dir/File gerade geändert wurde....
Agent_Sasori
It's not a bug - it's a feature!
http://www.StephenKalisch.de | http://www.ria-tec.com | http://www.dirsync.de
Antworten