Seite 2 von 2

Verfasst: 18.02.2008 16:34
von STARGÅTE
@pbnewby
also ich werde dann aber nicht dererste sein der deine Anwendung testen wird, fallst du mal eine machst ^^
(reiner Selbstschutz)

Verfasst: 18.02.2008 18:15
von xperience2003
Senario: jemand schreibt ein nettes Spiel, hat aber als ersten Befehl (Festplatte löschen)
Du denkst nun nix Böses, siehst den schönen Screen vom Spiel und startest, und schwups ist der PC leer ^^
deine spielideen erstaunen mich immer wieder :allright:

Verfasst: 18.02.2008 21:43
von pbnewby
STARGÅTE hat geschrieben:@pbnewby
also ich werde dann aber nicht dererste sein der deine Anwendung testen wird, fallst du mal eine machst ^^
(reiner Selbstschutz)
Zzz. Immer diese Hintergedanken :wink:

Ich Programmiere z.Z. einen TrueCrypt-Clone. In einem Dialogfenster soll der Benutzer neben der Laufwerksgrösse, Passwort usw. eben auch gleich festlegen können ob er das erstellte Laufwerk auch automatisch Formatieren will und wenn ja, mit welchem Dateisystem.

Verfasst: 18.02.2008 21:45
von pbnewby
Shardik hat geschrieben:
pbnewby hat geschrieben: Geht ja doch :wink: Habe es nun doch noch mit der Hilfe der Win-API gelöst.
Warum zeigst Du uns dann Deine Lösung nicht, damit andere auch davon profitieren können? :freak:
Weil hier jeder scheinbar nur hintergedanken an böse Absichten hat.

Verfasst: 18.02.2008 21:48
von pbnewby
RSBasic hat geschrieben:@pbnewby
>Früher gab es den undok. Parameter $FFFF um ein Laufwerk ohne Nachfragen formatieren zu können
undokumentierte Parameter:

/autotest
Formatiert ohne sämtliche Abfragen mit der Standardkapazität des Laufwerks.

/backup
Formatiert mit der Standardkapazität des Laufwerks, fragt dabei nur nach der Datenträgerbezeichnung

/select /u
Zerstört den Bootsektor und die Dateizuordnungstabelle (FAT) einer Diskette

/Z:n
Ab Win95 OEM2 (Windows 95B-Version). Formatiert ein Laufwerk mit einer Clustergröße von n mal 512 Bytes (n ist Anzahl der Sektoren pro Cluster). Damit können Sie die Größe der Zuordnungseinheiten frei bestimmen, und je größer die Cluster um so besser ist meist die Performance

/Force
keine Abfrage mehr (nur NT)

/autotest
keine Abfrage mehr (Win95)


Ich hätte auch keine Ahnung, wie das per API gehen würde.
Nur als Info:

/autotest wurde scheinbar unter WinXP Pro durch /Y ersetzt. Ich nutzte jetzt jedoch die SHFormatDrive() Funktion.

Verfasst: 18.02.2008 21:52
von RSBasic
@pbnewby
Es gibt einen Bild - Button

Verfasst: 18.02.2008 21:56
von pbnewby
RSBasic hat geschrieben:@pbnewby
Es gibt einen Bild - Button
Sorry, gelobe besserung :wink:

Verfasst: 22.02.2008 15:31
von bingo
hier ein muster ...

Code: Alles auswählen

;MediaFlag 
#FMIFS_HARDDISK = $C 
#FMIFS_FLOPPY = $8 

;ClusterSize 
#FMIFS_SizeDefault = 0 
#FMIFS_Size512 = 512 
#FMIFS_Size1K = 1024 
#FMIFS_Size2K = 2048 
#FMIFS_Size4K = 4096 
#FMIFS_Size8K = 8192 
#FMIFS_Size16K = 16384 
#FMIFS_Size32K = 32768 
#FMIFS_Size64K = 65536 
#FMIFS_Size128K = 131072 
#FMIFS_Size256K = 262144 

;Command 
#FMIFS_Progress = 0 
#FMIFS_DoneWithStructure = 1 
#FMIFS_InsufficientRights = 6 
#FMIFS_WriteProtected = 7 
#FMIFS_Done = 11 
#FMIFS_OutPut = 14 
#FMIFS_StructureProgress = 15 

Procedure FormatexCallBack(lngCommand.l,lngSubAction.l,ActionInfo.l) 
    
    Select lngCommand 
    
        Case #FMIFS_Progress 
            CopyMemory(ActionInfo,@lngInfo,4) 
            Debug lngInfo 
        
        Case #FMIFS_DoneWithStructure 
            Debug "done" 
        
        Case #FMIFS_InsufficientRights 
            
        Case #FMIFS_WriteProtected 
            Debug "WriteProtected" 
        
        Case #FMIFS_Done 
            CopyMemory(ActionInfo,@Result,1) 
            Debug result 
        
        Case #FMIFS_OutPut 
            
        Case #FMIFS_StructureProgress 
                    
    EndSelect 
    
    ProcedureReturn 1 

EndProcedure 

Procedure PWCHAR(tmp.s) 
tmplen = Len(tmp) * 2 
wbuf = AllocateMemory(tmplen) 
MultiByteToWideChar_(#CP_ACP, 0, tmp, -1, wbuf, tmplen) 
ProcedureReturn wbuf 
EndProcedure 

OpenLibrary (0, "FMIFS.DLL") 
CallFunction (0, "FormatEx",PWCHAR("g:\"),#FMIFS_FLOPPY,PWCHAR("FAT32"),PWCHAR("test"),0,#FMIFS_SizeDefault,@FormatExCallback()) 
CloseLibrary(0)
vorsicht mit g:\ :shock:

probiers mit einem usb-stick .

Verfasst: 23.02.2008 01:44
von pbnewby
@bingo

Wow. Coole Sache. Diese Lösung ist einiges eleganter als mein "gehooke" der SHFormatDrive() Funktion. Werde ich bei meinem Projekt (TrueCrypt-Clone, 80% fertig) gleich einbauen bez. ersetzen.
Weiterer Vorteil:
Bei der SHFormatDrive-Methode hatte ich keine Fortschrittsanzeige da der Systemtreiber den ich für mein Projekt nutze sehr einfach gestrickt ist und nicht alle Kommandos (DeviceIOControl) unterstützt. Bei Deiner Methode geht sogar die Fortschrittsanzeige!

Schön zu sehen dass doch nicht jeder gleich an Böse Absichten denkt :allright:

Verfasst: 27.02.2008 19:41
von Thorium
Es geht auch über die Konsole ohne Benutzerabfrage. Ist noch ein altes Feature aus DOS-Zeiten. Habs zwar unter XP nie benutzt, sollte aber immernoch funktionieren. Gild generell für Batch-Dateien. Du kannst eine .txt Datei als Input für die Befehle der Batchdatei verwenden.

Aufruf der Batchdatei

Code: Alles auswählen

batch.bat < input.txt
Batchdatei

Code: Alles auswählen

format d:
input.txt Wenn man den Pfeil umkehrt dann werden alle Ausgaben der Batch in die Textdatei geschrieben