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 Festplattenzugriffe protokollieren (https://www.delphipraxis.net/34328-festplattenzugriffe-protokollieren.html)

Kernel32.DLL 21. Nov 2004 11:34


Festplattenzugriffe protokollieren
 
Mahlzeit alle zusammen...

es gibt ja bekannterweise Tools, die sozusagen als "Festplatten - LED" fungieren, d.h die die Zugriffe auf die Festplatte protokollieren und dabei zwischen Lese- und Schreibzugriffen unterscheiden sowie die Dauer der Zugriffe in ms anzeigen.

Viele dieser Tools laufen unter WinXP/2003.

Daraus folgere ich einfach mal, dass es unter diesen Betriebsystemen eine Schnittstelle geben muss, die man irgendwie ansprechen kann.

Meine Frage wäre also: Wie mache ich das? :coder2:

=> Eine Anfrage beim MSDN brachte irgendwie keine brauchbaren Ergebnisse.

Wäre schön wenn jemand einen Ansatz hätte oder wüsste, welche Schnittstelle zu nutzen wäre.

mfg
Daniel


(Noch) keiner eine Idee?

*ungeduldig auf dem Stuhl hin - und herrutsch*


[edit=Christian Seehase]Beiträge zusammengefasst. Pushen erst nach 24h :!: Mfg, Christian Seehase[/edit]

Kernel32.DLL 22. Nov 2004 15:09

Re: Festplattenzugriffe protokollieren
 
Gestern schrieb ich:
(Noch) keiner eine Idee?

*ungeduldig auf dem Stuhl hin - und herrutsch*


[edit=Christian Seehase]Beiträge zusammengefasst. Pushen erst nach 24h Mfg, Christian Seehase[/edit]


So, nu aber:

*schiiiiiiiieeeeeb*

Luckie 22. Nov 2004 15:10

Re: Festplattenzugriffe protokollieren
 
Guck dich mal bei www.sysinternals.com um. Dazu wirst du einen Treiber brauchen und den wirst du mit Delphi nicht entwicklen können.

Kernel32.DLL 22. Nov 2004 15:20

Re: Festplattenzugriffe protokollieren
 
*grmpf*

trotzdem danke fürs erste...

(sollte trotzdem noch wer ne idee haben...)

Mephistopheles 27. Apr 2005 19:20

Re: Festplattenzugriffe protokollieren
 
Wenn es ganz "allgmein" Festplattenzugriffe sein sollen, geht es nur mit Treibern. PUNKT. Da gibt es keine anderen Ideen auf die man kommen könnte.

Da hilft es nicht diese Frage als offen markiert zu lassen.

Christoph Laumann 10. Jun 2005 17:07

Re: Festplattenzugriffe protokollieren
 
Um an einem Treiber vorbeizukommen, könntest du die Performance API bemühen und beispielsweise in regelmäßigen Intervallen abfragen, wieviele Bytes gerade pro Sekunde gelesen/geschrieben werden oder bisher ingesamt gelesen/geschrieben wurden.

brechi 10. Jun 2005 18:00

Re: Festplattenzugriffe protokollieren
 
und wenns kompliziert haben willst kannte nen API hook auf CreateFileW und ReadFile machen und alles mitloggen

NicoDE 10. Jun 2005 18:09

Re: Festplattenzugriffe protokollieren
 
Zitat:

Zitat von brechi
und wenns kompliziert haben willst kannte nen API hook auf CreateFileW und ReadFile machen und alles mitloggen

'Alles' wird man dadurch nicht überwachen.
Wie Christoph schon schrieb: Performance API (im der CodeLib müsste ein Beispiel zum Auslesen der SystemUp-Time stehen)

Olli 11. Jun 2005 12:40

Re: Festplattenzugriffe protokollieren
 
*senf-ranschaufel*
Also die Performance-API kann nur dann helfen, wenn es um die Quantität der Zugriffe geht. Über die Qualität (i.e. den Inhalt) kann die nichts aussagen. Ansonsten, wenn wir schon beim API-Hooking sind, können wir auch ein Stockwerk tiefer gehen und über SSDT-Hooking reden. Aber selbst hier, auf dieser Ebene, kann man durch das Hooken der Native APIs nicht alles abfangen. Die sicherste Methode dürfte wohl ein Filtertreiber sein. Wenn es nur um Lesen/Schreiben im althergebrachten Sinne geht, kann ein API-Hook auf eine Native API im Usermode oder besser im Kernelmode helfen (ansonsten sind bei brechis Methode zumindest dann welche durchs Netz gegangen, wenn jemand die Native APIs direkt benutzt - wie andere Subsysteme, oder interne Funktionen von Windows).

Übrigens: bei der Performance Counter Methode würde ich die Registry-Benachrichtigungs-APIs empfehlen (statt ständigem Polling ;)).

Daniel G 11. Jun 2005 13:40

Re: Festplattenzugriffe protokollieren
 
Zitat:

Zitat von Olli
*senf-ranschaufel*
Also die Performance-API kann nur dann helfen, wenn es um die Quantität der Zugriffe geht. Über die Qualität (i.e. den Inhalt) kann die nichts aussagen.

Das wars ja damals, was ich brauchte. Es war mir egal, was da geschrieben wird, ich wollte nur wissen, ob was geschrieben/gelesen wird.

gsh 11. Jun 2005 14:19

Re: Festplattenzugriffe protokollieren
 
Unter der Kategorie Beispiele ist eine Komponente ShellChangeNotifier. Ich GLAUBE des ist genau des was du brauchst den diese Komponente springt an wenn auf des eingestelle verzeichnis eine Datei geaändert oder sonst irgendwas wird (kann man auch einstellen). Hab selber noch nie damit gearbeitet aber schon ein bisschen damit rumgespielt. Ich hoff für dich die Komponente funktioniert. :zwinker:

Daniel G 11. Jun 2005 17:54

Re: Festplattenzugriffe protokollieren
 
Zitat:

Zitat von gsh
Unter der Kategorie Beispiele ist eine Komponente ShellChangeNotifier.

:shock: Wo? Hm... ich glaube, ich sollte meine Delphi - Version im Profil angeben: Delphi 5 Pro.

Aber vllt. ist sie ja bei Delphi2005 Personal dabei...

[Edit] Ach, ich hab ja noch 'ne Delphi 7 Personal. Ich schau' mal nen bissel 'rum [/Edit]

Christoph Laumann 11. Jun 2005 19:26

Re: Festplattenzugriffe protokollieren
 
Mit Shell Notifications wirst du aber wieder nicht alles erfassen können.

Möglicherweise kannst du aber statt Performance API (per API oder Registry) auch über WMI die nötigen Informationen herausbekommen. Wenn ich mich recht entsinne gibt es da auch Events bzw. Notifications.

Gruß,
Christoph

Olli 11. Jun 2005 20:09

Re: Festplattenzugriffe protokollieren
 
Zitat:

Zitat von Daniel G
Zitat:

Zitat von Olli
*senf-ranschaufel*
Also die Performance-API kann nur dann helfen, wenn es um die Quantität der Zugriffe geht. Über die Qualität (i.e. den Inhalt) kann die nichts aussagen.

Das wars ja damals, was ich brauchte. Es war mir egal, was da geschrieben wird, ich wollte nur wissen, ob was geschrieben/gelesen wird.

Mist. Warum haste das damals nicht gesagt :mrgreen:

@Christoph: also bei den üblichen Verdächtigen (Win32_DiskPartition und Win32_DiskDrive) habe ich nix gefunden. Hast du einen konkreten Verdacht welche WMI-Klasse das bietet?

Christoph Laumann 11. Jun 2005 20:19

Re: Festplattenzugriffe protokollieren
 
@Olli: Einen Verdacht hatte ich nicht - musste selber kurz nachschauen:
http://msdn.microsoft.com/library/de...er_classes.asp

Andere Möglichkeit ist noch Root\wmi\MSDISKDriver_Performance

Olli 11. Jun 2005 20:22

Re: Festplattenzugriffe protokollieren
 
Zitat:

Zitat von Christoph Laumann
@Olli: Einen Verdacht hatte ich nicht - musste selber kurz nachschauen:
http://msdn.microsoft.com/library/de...er_classes.asp

Andere Möglichkeit ist noch Root\wmi\MSDISKDriver_Performance

Ah, alles klar. Perfomance Counter aber über den "neuen" Weg (eben WMI). Danke für die schnelle Reaktion.

Daniel G 11. Jun 2005 21:20

Re: Festplattenzugriffe protokollieren
 
Zitat:

Zitat von Olli
Zitat:

Zitat von Daniel G
Zitat:

Zitat von Olli
*senf-ranschaufel*
Also die Performance-API kann nur dann helfen, wenn es um die Quantität der Zugriffe geht. Über die Qualität (i.e. den Inhalt) kann die nichts aussagen.

Das wars ja damals, was ich brauchte. Es war mir egal, was da geschrieben wird, ich wollte nur wissen, ob was geschrieben/gelesen wird.

Mist. Warum haste das damals nicht gesagt :mrgreen:

Stimmt, direkt habe ich das nicht gesagt, aber den Hinweis gegeben:


Zitat:

[...]es gibt ja bekannterweise Tools, die sozusagen als "Festplatten - LED" fungieren[...]
Oder weiß die LED an deinem PC, was du schreibst? :mrgreen:

@topic:
Stimmt, Shell Notification ist wirklich nicht das richtige. Ich werde bei Gelegenheit mal in Richtung Performance API oder WMI weiterforschen.


Der Daniel

Daniel G 11. Jun 2005 22:00

Re: Festplattenzugriffe protokollieren
 
So, ich penetrier euch dann mal mit'm Doppelpost:

Nach kurzen stöbern ist mir aufgefallen, das der ganze WMI - Kram sch*** komplex ist. Ich bleib also vorerst bei meinem aktuellen Projekt. Außer natürlich, jemand hat Links, die mir verraten, wie ich das mit Delphi alles anstell'.

(Jepp, die Forensuche habe ich schon genutzt)

So long
Daniel

Olli 11. Jun 2005 22:07

Re: Festplattenzugriffe protokollieren
 
Zitat:

Zitat von Daniel G
So, ich penetrier euch dann mal mit'm Doppelpost:

Wie penetrant :mrgreen:

Übrigens, schonmal Google gefragt? :zwinker: Bei Google suchenDelphi WMI

http://www.iisfaq.com/Default.aspx?tabid=2502
http://people.fm.uniba.sk/balaz/Downloads_Del_En.htm

Nachtrag: Sogar die Forensuche bringt erkleckliches ;)

http://www.delphipraxis.net/internal...ct.php?t=44431
http://www.delphipraxis.net/internal...ct.php?t=44405
http://www.delphipraxis.net/internal...ct.php?t=52494

Daniel G 11. Jun 2005 22:50

Re: Festplattenzugriffe protokollieren
 
Zitat:

Zitat von Olli
Zitat:

Zitat von Daniel G
So, ich penetrier euch dann mal mit'm Doppelpost:

Wie penetrant :mrgreen:

Übrigens, schonmal Google gefragt? :zwinker: Bei Google suchenDelphi WMI

http://www.iisfaq.com/Default.aspx?tabid=2502
http://people.fm.uniba.sk/balaz/Downloads_Del_En.htm

Nachtrag: Sogar die Forensuche bringt erkleckliches ;)

http://www.delphipraxis.net/internal...ct.php?t=44431
http://www.delphipraxis.net/internal...ct.php?t=44405
http://www.delphipraxis.net/internal...ct.php?t=52494

Halleluja :firejump:

Achso:

http://people.fm.uniba.sk/balaz/Downloads_Del_En.htm <= Hatte ich schon gefunden, is' aber tot. Dem Google - Cache nach wär's net schlecht gewesen

Olli 11. Jun 2005 22:56

Re: Festplattenzugriffe protokollieren
 
Zitat:

Zitat von Daniel G
Achso:

http://people.fm.uniba.sk/balaz/Downloads_Del_En.htm <= Hatte ich schon gefunden, is' aber tot. Dem Google - Cache nach wär's net schlecht gewesen

Ähem? Benutzt du Proxies oder so? Die Seite (inkl. Downloads) funktioniert bei mir tadellos.

DGL-luke 12. Jun 2005 10:11

Re: Festplattenzugriffe protokollieren
 
geht bei mir auch nicht. und ich hab definitiv keinen proxy.

Olli 12. Jun 2005 10:45

Re: Festplattenzugriffe protokollieren
 
Liste der Anhänge anzeigen (Anzahl: 2)
Komisch. Was habt ihr bloß für ISPs. Ihr seid doch nicht etwa die Opfer irgendwelcher Zensurmaßnahmen? Ich kann die Seite so betrachten, wie ich es gestern konnte. Habe mal einen Screenshot des Abschnitts zu WMI und den Source mit Orginalnamen der Datei angehangen.

gsh 12. Jun 2005 11:00

Re: Festplattenzugriffe protokollieren
 
bei mir geht die Seite auf ohne Problemme.
(Kein Proxy, nur Router)

Daniel G 12. Jun 2005 20:14

Re: Festplattenzugriffe protokollieren
 
Zitat:

Zitat von Olli
Zitat:

Zitat von Daniel G
Achso:

http://people.fm.uniba.sk/balaz/Downloads_Del_En.htm <= Hatte ich schon gefunden, is' aber tot. Dem Google - Cache nach wär's net schlecht gewesen

Ähem? Benutzt du Proxies oder so? Die Seite (inkl. Downloads) funktioniert bei mir tadellos.

Hm... Nö, Proxy nutz' ich net. Mein ISP? Dieser Amerikaner da, mit den 3 großen Buchstaben... Ach, wie hieß denn der noch gleich? :zwinker:

Ach ja, danke für den Source.

Christoph Laumann 12. Jun 2005 21:47

Re: Festplattenzugriffe protokollieren
 
Falls du dich doch entscheides es über Treiber oder Hooks zu machen, dann ist vielleicht der FileMonitor Source Code von Sysinternals ganz hilfreich.

Daniel G 13. Jun 2005 00:36

Re: Festplattenzugriffe protokollieren
 
Zitat:

Zitat von Christoph Laumann
Falls du dich doch entscheides es über Treiber oder Hooks zu machen, dann ist vielleicht der FileMonitor Source Code von Sysinternals ganz hilfreich.

Jupp, FileMon kenn' ich. Allerdings... Nun ja, den Source Code finde ich bei den nicht auf der HP.

Christoph Laumann 13. Jun 2005 01:51

Re: Festplattenzugriffe protokollieren
 
Den Source der alten Version findest du bestimmt mit einer Suchmaschine irgendwo... Er stand jedenfalls mal online. Aber versuch es lieber mit Perf-API :-)

Olli 13. Jun 2005 08:19

Re: Festplattenzugriffe protokollieren
 
Bevor man sich durch den Filemon-Source durchgepfriemelt hat, schreibt man's einfacher selber ;)
So schwer ist SSDT-Hooking nicht. Das schwerste ist es, zu verhindern, daß es Konflikte mit anderen Hooks gibt (Test ob Sprungadresse innerhalb NTOSKRNL.EXE, Lücke finden in die man schreiben kann etc.).

Aber wenn du Filemon und Regmon im Source brauchst, habe da noch die alte Version im Source vorliegen. PN an mich und ich schicke es dir zu.


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:21 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-2025 by Thomas Breitkreuz