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 Handle einer Festplatte -> Festplattengröße (https://www.delphipraxis.net/24986-handle-einer-festplatte-festplattengroesse.html)

SleepyMaster 29. Jun 2004 13:17


Handle einer Festplatte -> Festplattengröße
 
Hi ihrs

Hab mir mit
Delphi-Quellcode:
FHandle:=CreateFile('\\.\PHYSICALDRIVE0',GENERIC_READ or GENERIC_WRITE, FILE_SHARE_READ or FILE_SHARE_WRITE, nil, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);
ein gültiges Handle auf meine Festplatte geholt.

Nur wenn ich mit
Delphi-Quellcode:
FileSizeLow:=GetFileSize(FHandle,nil);
nun die Größe holen will, bekomme ich immer INVALID_FILE_SIZE zurück.

Zitat:

Zitat von MSDN
You cannot use the GetFileSize function with a handle of a nonseeking device such as a pipe or a communications device. To determine the file type for hFile, use the GetFileType function.

Weiß jemand eine Lösung, wie ich von dem Handle einer Festplatte die Festplattengröße herausfinden kann???

[EDIT]Mit GetFileInformationByHandle gehts auch nicht[/EDIT]

Vielen Dank schon mal

Alexander 29. Jun 2004 14:27

Re: Handle einer Festplatte -> Festplattengröße
 
Hier steht ein Beispiel wie man die Festplattengröße mit GetDiskFreeSpaceEx herausbekommt.

SleepyMaster 29. Jun 2004 17:09

Re: Handle einer Festplatte -> Festplattengröße
 
OK! Danke.

Aber:
1. Suche ich die gesamte Größe der Festplatte
2. Nicht die einer Partition

Hab das Programm SysInfo3.2 von Luckie gefunden.
Dieses Programm kann genau das was ich suche.

Werde es mal analysieren.

w3seek 30. Jun 2004 11:27

Re: Handle einer Festplatte -> Festplattengröße
 
Probiers mal hiermit: http://msdn.microsoft.com/library/de...e_geometry.asp

sollte sehr einfach zu realisieren sein.

Luckie 30. Jun 2004 11:29

Re: Handle einer Festplatte -> Festplattengröße
 
Zitat:

Zitat von w3seek
sollte sehr einfach zu realisieren sein.

Wenn man die nötigen Header hat:
Zitat:

Header: Declared in Winioctl.h.
Ist aber mit den Jedis-Headerübersetzungen wirklich kein Problem.

w3seek 30. Jun 2004 14:17

Re: Handle einer Festplatte -> Festplattengröße
 
Zitat:

Zitat von Luckie
Wenn man die nötigen Header hat:

Ich finds traurig und schon fast ne frechheit dass borland diese Header nicht uebersetzt. Ausserdem sind die Deklarationen mancher Funktionen nicht ganz korrekt, z.b. verwenden sie var Parameter: Typ; manchmal sogar dann, wenn laut PSDK ausdruecklich erlaubt ist auch NULL (also nil) zu uebergeben. Da bleibt einem dann wieder nichts anderes uebrig als die funktion selbst korrekt zu importieren. Oder manche records sind voellig falsch uebersetzt (z.b. TTriVertex fuer GradientFill())

SleepyMaster 30. Jun 2004 19:30

Re: Handle einer Festplatte -> Festplattengröße
 
IOCTL_DISK_GET_DRIVE_GEOMETRY:

Über genau den Weg hab ichs jetzt gemacht. Ist wirklich sehr einfach - Man muss nur erst drauf kommen.

Falls jemand den Code will bitte melden poste den dann (ist am Laptop und ich grad am PC)

Vielen Dank an alle!!!

MathiasSimmack 30. Jun 2004 20:44

Re: Handle einer Festplatte -> Festplattengröße
 
Zitat:

Zitat von w3seek
Ich finds traurig und schon fast ne frechheit dass borland diese Header nicht uebersetzt. Ausserdem sind die Deklarationen mancher Funktionen nicht ganz korrekt, z.b. verwenden sie var Parameter: Typ; manchmal sogar dann, wenn laut PSDK ausdruecklich erlaubt ist auch NULL (also nil) zu uebergeben.

Und nicht zu vergessen, die Fehler, die sich seit Delphi 3 (oder sogar noch eher) durchziehen. Die Fixes bleiben dann bei engagierten Anwendern wie den JEDIs usw. (usw. stellt keine Abwertung anderer, nicht genannter Leute dar!) hängen.


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