Laufwerk automatisch formatieren? [X]

Windowsspezifisches Forum , API ,..
Beiträge, die plattformübergreifend sind, gehören ins 'Allgemein'-Forum.
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 7032
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Beitrag von STARGÅTE »

@pbnewby
also ich werde dann aber nicht dererste sein der deine Anwendung testen wird, fallst du mal eine machst ^^
(reiner Selbstschutz)
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
xperience2003
Beiträge: 972
Registriert: 04.10.2004 18:42
Computerausstattung: Amiga, LinuxMint, Windows7
Wohnort: gotha
Kontaktdaten:

Beitrag 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:
amiga rulez...
Rebirth Software
pbnewby
Beiträge: 34
Registriert: 21.01.2008 16:10

Beitrag 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.
Zuletzt geändert von pbnewby am 19.02.2008 07:28, insgesamt 1-mal geändert.
-=[ PBNewBy ]=-
pbnewby
Beiträge: 34
Registriert: 21.01.2008 16:10

Beitrag 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.
-=[ PBNewBy ]=-
pbnewby
Beiträge: 34
Registriert: 21.01.2008 16:10

Beitrag 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.
-=[ PBNewBy ]=-
Benutzeravatar
RSBasic
Admin
Beiträge: 8047
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Beitrag von RSBasic »

@pbnewby
Es gibt einen Bild - Button
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
pbnewby
Beiträge: 34
Registriert: 21.01.2008 16:10

Beitrag von pbnewby »

RSBasic hat geschrieben:@pbnewby
Es gibt einen Bild - Button
Sorry, gelobe besserung :wink:
-=[ PBNewBy ]=-
Benutzeravatar
bingo
Beiträge: 118
Registriert: 16.09.2004 18:33
Wohnort: thüringen
Kontaktdaten:

Beitrag 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 .
1:0>1
pbnewby
Beiträge: 34
Registriert: 21.01.2008 16:10

Beitrag 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:
-=[ PBNewBy ]=-
Benutzeravatar
Thorium
Beiträge: 1722
Registriert: 12.06.2005 11:15
Wohnort: Germany
Kontaktdaten:

Beitrag 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
Zu mir kommen behinderte Delphine um mit mir zu schwimmen.

Wir fordern mehr Aufmerksamkeit für umfallende Reissäcke! Bild
Antworten