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 Wechseldatenträger formatieren (https://www.delphipraxis.net/141131-wechseldatentraeger-formatieren.html)

Rülps 3. Okt 2009 09:15


Wechseldatenträger formatieren
 
Hallo,

gibt es einen API Aufruf, der unter XP und Vista gültig ist und mit dem man beispielsweise einen USB Stick formatieren kann. Ob FAT oder FAT32 sollte als Parameter übergeben werden können?

himitsu 3. Okt 2009 09:28

Re: Wechseldatenträger formatieren
 
Du kannst doch einfach den "DOS"-Format-Befehl mit den nötigen Parametern aufrufen.


Es gibt auch eine einfache "Komponente" dafür, leider finde ich diese grade nicht,
aber im Endefekt machte man da auch nichts anderes, außer FORMAT aufzurufen und dessen Ausgabe von der "Konsole" in ein Memo umzuleiten.

via CreateProcess aufrufen und die Standard-Output- und -Input-Handle entsprechend umgeleitet.

hathor 3. Okt 2009 09:37

Re: Wechseldatenträger formatieren
 
Ich verwende fat32format.exe, das kann auch 2000GB grosse HDD mit FAT32 formatieren.

http://www.ridgecrop.demon.co.uk/ind...at32format.htm
http://www.ridgecrop.demon.co.uk/dow...at32format.zip
http://www.ridgecrop.demon.co.uk/dow...2formatsrc.zip

Rülps 3. Okt 2009 09:39

Re: Wechseldatenträger formatieren
 
Hallo,

dieser Möglichkeit bin ich mir bewusst. Aber vielleicht gibt es ja eine einfachere Möglichkeit durch einen API Aufruf. Ich habe schon gesucht und mich gewundert, nichts gefunden zu haben. Hintergrund ist, dass ein in C++ geschriebene kommerzielle DLL in einem Programm genutzt wird, welche die Formatierung durchführt. Hatte bisher in XP auch wunderbar funktioniert - nur unter VISTA dauert eine Schnellformatierung etwa 5 Minuten. Wenn man es mit VISTA Bordmitteln macht, dann höchstens 3 Sekunden.

EDIT: @hathor: Kann man dieses externe Programm in kommerziellen Produkten nutzen?

hathor 3. Okt 2009 09:42

Re: Wechseldatenträger formatieren
 
Zitat:

Zitat von Rülps
Hallo,

dieser Möglichkeit bin ich mir bewusst. Aber vielleicht gibt es ja eine einfachere Möglichkeit durch einen API Aufruf. Ich habe schon gesucht und mich gewundert, nichts gefunden zu haben. Hintergrund ist, dass ein in C++ geschriebene kommerzielle DLL in einem Programm genutzt wird, welche die Formatierung durchführt. Hatte bisher in XP auch wunderbar funktioniert - nur unter VISTA dauert eine Schnellformatierung etwa 5 Minuten. Wenn man es mit VISTA Bordmitteln macht, dann höchstens 3 Sekunden.

EDIT: @hathor: Kann man dieses externe Programm in kommerziellen Produkten nutzen?

Musst Du gucken, was im Sourcecode steht:

// Fat32 formatter version 1.05
// (c) Tom Thornhill 2007,2008,2009
// This software is covered by the GPL.
// By using this tool, you agree to absolve Ridgecrop of an liabilities for lost data.
// Please backup any data you value before using this tool.

Rülps 3. Okt 2009 09:49

Re: Wechseldatenträger formatieren
 
Sehe erst jetzt, fat32format.exe besitzt keine Möglichkeit im FAT16 Format zu formatieren. Dass es das kann ist wichtiger, als dass es FAT32 kann.

hathor 3. Okt 2009 09:58

Re: Wechseldatenträger formatieren
 
Wofür brauchst Du FAT16?
Microcontroller?
Laut Sourcecode geht FAT16 auch:
.
Code:
typedef struct tagFAT_BOOTSECTOR32
{
    // Common fields.
    BYTE sJmpBoot[3];
    BYTE sOEMName[8];
    WORD wBytsPerSec;
    BYTE bSecPerClus;
    WORD wRsvdSecCnt;
    BYTE bNumFATs;
    WORD wRootEntCnt;
    WORD wTotSec16; // if zero, use dTotSec32 instead
    BYTE bMedia;
    WORD wFATSz16;
    WORD wSecPerTrk;
    WORD wNumHeads;
    DWORD dHiddSec;
    DWORD dTotSec32;
    // Fat 32/16 only
    DWORD dFATSz32;
    WORD wExtFlags;
    WORD wFSVer;
    DWORD dRootClus;
    WORD wFSInfo;
    WORD wBkBootSec;
    BYTE Reserved[12];
    BYTE bDrvNum;
    BYTE Reserved1;
    BYTE bBootSig; // == 0x29 if next three fields are ok
    DWORD dBS_VolID;
    BYTE sVolLab[11];
    BYTE sBS_FilSysType[8];

} FAT_BOOTSECTOR32;


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:56 Uhr.

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