Delphi-PRAXiS
Seite 3 von 4     123 4      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Defragmentier- oder datenrecovery programm realisieren? (https://www.delphipraxis.net/47044-defragmentier-oder-datenrecovery-programm-realisieren.html)

Olli 8. Jun 2005 09:08

Re: Defragmentier- oder datenrecovery programm realisieren?
 
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:

Zitat von starY
Delphi-Quellcode:
DeviceIoControl(DeviceHandle, IOCTL_DISK_GET_DRIVE_GEOMETRY, nil, 0,
    @DiskGeometry, sizeof(DiskGeometry), Dummy, nil);

Dummy muß vom Typ DWORD sein, und wenn in deiner DeviceIoControl()-Deklaration statt "var Returned: DWORD" ein "Returned: PDWORD" steht, dann mußt du "@Dummy" notieren.
BTW: Ab XP gibt es auch IOCTL_DISK_GET_DRIVE_GEOMETRY_EX.

Verrätst du mir bitte noch, wie du die Wiederherstellung der Daten löst? Aktuell waren wir ja da stehen geblieben, daß man mit Administratorrechten sowohl Defragmentierung als auch sektorweises Auslesen durchführen kann. Mehr machst du ja mit maels Beispielcode (noch) nicht (als Auslesen - nicht daß es wieder zu Mißverständnissen kommt).

Nachtrag: Ich bezweifle, daß die IOCTLs irgendwo deklariert sind im Standard-Delphi. Entweder behilfst du dir, indem du sie selber übersetzt, oder du schaust mal in DelphiWorks von Codehunter - er hat IMO Code zum Thema drin. Ansonsten wären die JEDI JCL und ApiLib (JwaWinIoctl.pas - dort ist der gesuchte Code definitiv drin, aber SF ist grad down) noch eine Anlaufstelle.


PS: Habe mal CVS-Version 1.6 von der JwaWinIoctl.pas anghangen, damit du nicht auf SF.net angewiesen bist, wenn es doch grad down ist ;)

starY 8. Jun 2005 14:12

Re: Defragmentier- oder datenrecovery programm realisieren?
 
NTFS speichert ja die gelöschten Dateien (bzw. den Zeiger auf den Datenbereich) in einem Log file record. Ich weiß zwar gerade nicht wieviele Dateien dort gespeichert bleiben aber ich wollte mich erstmal darauf beschränken. Danach mich dann wohl mit MBR bzw Partitionstable recovery beschäftigen und dann vielleicht Datenstrukturen analysieren, wobei ich davon noch keine Ahnung habe.

Die IOCTLs sind wirklich nicht in Standard Delphi deklariert. Nur ist SF.net leider wirklich down und die pas Datei, die du angehängt hast, braucht leider noch ein paar mehr pas Dateien, welcher aber wohl wieder andere pas Dateien brauchen. :(

PS: 7z-Format ist vielleicht ein wenig exotisch aber darüber lässt sich ja bekannterweise streiten ;D

Olli 8. Jun 2005 14:56

Re: Defragmentier- oder datenrecovery programm realisieren?
 
Die anderen PAS-Dateien solltest du nicht brauchen. Ansonsten mußt du mir nochmal sagen welche du brauchst. Habe eine lokale Kopie. Dauert aber dann eine Weile, weil ich gleich weg muß.

generic 8. Jun 2005 15:14

Re: Defragmentier- oder datenrecovery programm realisieren?
 
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:

Zitat von starY
PS: 7z-Format ist vielleicht ein wenig exotisch aber darüber lässt sich ja bekannterweise streiten ;D

nix, ist cool, ist free und hat eigendlich jeder ;-)

ich weiss nicht welche version von der jwa ich hier ab.
aber es ist immer noch besser als keine, oder?

generic 8. Jun 2005 15:16

Re: Defragmentier- oder datenrecovery programm realisieren?
 
ups hier gibts was neueres:
http://members.chello.nl/m.vanbrakel2/

Olli 8. Jun 2005 17:00

Re: Defragmentier- oder datenrecovery programm realisieren?
 
Zitat:

Zitat von generic
ups hier gibts was neueres:
http://members.chello.nl/m.vanbrakel2/

Ist definitiv nicht neuer (May, 2004?!). Glaub mir einfach.

Marcel hat seine Header ja für das JEDI AiLib-Projekt spendiert. Ich persönlich arbeite am meisten an der JwaNative.pas (ist inzwischen >70% größer als Marcels Ursprungsversion). Also alles im ApiLib-Projekt ist neuer.

Daniel G 8. Jun 2005 17:38

Re: Defragmentier- oder datenrecovery programm realisieren?
 
@StarY:

Ich weiß ja net, was du für eine Internetverbindung hast. Aber, wenn du DSL hast, würde ich mir an deiner Stelle das PSDK von der Microsoft - HP herunterladen. Da hast du dann auch gleich Headerdateien dabei (allerdings in C). Aber die Werte für die IOCTL - Konstanten stehen da drinne, also eine unschätzbare Hilfe ;)

Olli 8. Jun 2005 17:42

Re: Defragmentier- oder datenrecovery programm realisieren?
 
Notfalls kann ich's dir auch auf CD zuschicken, wenn du kein DSL hast. Einfach PN an mich ;)

Übrigens sind die meisten IOCTLs keine festen Werte, sondern vielmehr Makros. Die können sich leider auch irgendwann mal ändern *schnief* ... das wird ein Wartungsalptraum.

Christian Seehase 8. Jun 2005 19:42

Re: Defragmentier- oder datenrecovery programm realisieren?
 
Moin Olli,

Zitat:

Zitat von Olli
Die können sich leider auch irgendwann mal ändern *schnief*

gehst Du wirklich davon aus? (kann ich mir eigentlich nicht vorstellen ;-))
Dann würden "ältere" Programme, schlagartig, nicht mehr funktionieren.

Zitat:

Zitat von Olli
Übrigens sind die meisten IOCTLs keine festen Werte, sondern vielmehr Makros.

So wie die aufgebaut sind, macht das auch Sinn, denn dann kann man die Werte leichter um neue ergänzen.

starY 8. Jun 2005 20:21

Re: Defragmentier- oder datenrecovery programm realisieren?
 
Ja DSL hab ich aber es geht schon mit der JwaWinIoctl.pas.

Nochmals danke für die Hilfe. ;)

Bin mal weiter testen und probieren ;D

MfG

starY


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:31 Uhr.
Seite 3 von 4     123 4      

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