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 Erstellen eines einfachen Volumens (Win7) (https://www.delphipraxis.net/167898-erstellen-eines-einfachen-volumens-win7.html)

Alter Mann 24. Apr 2012 17:56

Erstellen eines einfachen Volumens (Win7)
 
Hallo,

ich habe ein Verständnisfrage: Wie erstele ich ein einfachen Volumen unter Windows 7 bzw. XP?

Die Grundzüge sind schon bekannt, nur mit der praktischen Umsetzung will es nicht so ganz klappen.
Zum besseren Verständnis, die Fetsplatte wird an den Rechner angeschlossen(USB, eSATA etc.) und
überschrieben.
Code:
1. Auswahl durch den Benutzer
2. Ermittelns aller vorhandenen Mountpoints
3. Löschen der Mountpoints
4. Löschen des Drive_Layouts
5. Überschreiben mit einem Füll-Byte
Im Anschluss soll auf der Festplatte ein einfaches Volumen erstellt werden, dass den gesamten vorhandenen Platz einnimmt. Und da wird es eng.
Code:
1. Erstellen der Disk (IOCTL_DISK_CREATE_DISK);
2. Erstellen des Drive_Layouts (IOCTL_DISK_SET_DRIVE_LAYOUT_EX)
Eigentlich würde nun ein IOCTL_DISK_SET_PARTITION_INFO_EX kommen, aber
Windows 7 ist schneller und blendet einen Dialog ein der zum Formatieren des Laufwerkes auffordert. IOCTL_DISK_SET_PARTITION_INFO_EX meldet einen Fehler 31: "Ein an das System angeschlossenes Gerät funktioniert nicht".

Wie müsste die Reihenfolge welcher API-Aufrufe aussehen, ohne das Windows dazwischen funkt?

Danke

himitsu 24. Apr 2012 18:37

AW: Erstellen eines einfachen Volumens (Win7)
 
Ich hab's nicht mehr im Kopf, aber

schau mal auf Luckies Webseite.
Dort befindet sich irgendwo ein Programm mit Zugriff auf Disketten.

Und wenn ich mich recht erinnere, dann gibt es in seinem Code einen Befehl zum Sperren des Laufwerks.
Genau den würde ich mir von dort mopsen.

Luckie 24. Apr 2012 18:52

AW: Erstellen eines einfachen Volumens (Win7)
 
http://michael-puff.de/Programmierung/Delphi/Programme -> DiskImageNT.zip

Assarbad 24. Apr 2012 23:53

AW: Erstellen eines einfachen Volumens (Win7)
 
Zitat:

Zitat von Alter Mann (Beitrag 1163394)
Eigentlich würde nun ein IOCTL_DISK_SET_PARTITION_INFO_EX kommen, aber
Windows 7 ist schneller und blendet einen Dialog ein der zum Formatieren des Laufwerkes auffordert. IOCTL_DISK_SET_PARTITION_INFO_EX meldet einen Fehler 31: "Ein an das System angeschlossenes Gerät funktioniert nicht".

Wie müsste die Reihenfolge welcher API-Aufrufe aussehen, ohne das Windows dazwischen funkt?

Haste die Platte exklusiv geöffnet? Ich denke mal daran wird es liegen. Ansonsten würde ich annehmen, daß man dem Mount Manager auch verklickern kann, daß er sich momentan mal bei einem Volume zurückhalten möge.

Alter Mann 25. Apr 2012 06:13

AW: Erstellen eines einfachen Volumens (Win7)
 
Danke, ich werde mir DiskImageNT ansehen.

@Assarbad
Zitat:

Ansonsten würde ich annehmen, daß man dem Mount Manager auch verklickern kann, daß er sich momentan mal bei einem Volume zurückhalten möge.
Man müsste nur wissen wie.

himitsu 25. Apr 2012 08:07

AW: Erstellen eines einfachen Volumens (Win7)
 
Zitat:

Zitat von Alter Mann (Beitrag 1163441)
Man müsste nur wissen wie.

CreateFile hat da so gewisse Parameter, welche man setzen kann. :angle:

Assarbad 5. Mai 2012 00:50

AW: Erstellen eines einfachen Volumens (Win7)
 
Übrigens: http://stackoverflow.com/questions/1...a-drive-letter

... bisher keine positive Antwort, aber sicher wert ab und an mal reinzugucken ;)


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:12 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