| |
|
|
|
Beschreibung:
GetDiskFreeSpaceEx liefert Daten über den gesamten und den freien Speicherplatz eines Laufwerks.
Deklaration:
DEF @GetDiskFreeSpaceEx(4) !kernel32,GetDiskFreeSpaceExA
Parameter:
1.Parameter: Adresse eines Strings oder Bereichsvariable mit einem Strings, der das Rootverzeichnis des abzufragenden Laufwerks enthält. 2.Parameter: ULARGE_INTEGER Struktur oder 8 Byte Bereichsvariable, die den für den aktuellen User verfügbaren Speicherplatz enthält.=> Byte 0-3 = Die unteren 4 Bytes des Wertes des freien Speicherplatzes (0 bis 2^32-1 Bytes). Byte 4-7 = Die oberen 4 Bytes des Wertes des freien Speicherplatzes. (2^32 Bytes bis 2^64-1 Bytes). 3.Parameter: ULARGE_INTEGER Struktur oder 8 Byte Bereichsvariable, die den gesamten Speicherplatz des Laufwerks enthält.=> Byte 0-3 = Die unteren 4 Bytes des Wertes des freien Speicherplatzes (0 bis 2^32-1 Bytes). Byte 4-7 = Die oberen 4 Bytes des Wertes des freien Speicherplatzes. (2^32 Bytes bis 2^64-1 Bytes). 4.Parameter: ULARGE_INTEGER Struktur oder 8 Byte Bereichsvariable, die den gesamten freien Speicherplatz des Laufwerks enthält.=> Byte 0-3 = Die unteren 4 Bytes des Wertes des freien Speicherplatzes (0 bis 2^32-1 Bytes). Byte 4-7 = Die oberen 4 Bytes des Wertes des freien Speicherplatzes. (2^32 Bytes bis 2^64-1 Bytes).
Rückgabewert:
1 bei Erfolg, 0 bei Fehler.
Beispiele:
DEF @GetDiskFreeSpaceEx(4) !"kernel32","GetDiskFreeSpaceExA"
Declare LWERK$,Free#,Total#,Total!,Free!,TotalFree!,TotalFree#
...wegen Bug in Profan wandele ich Words und nicht LongInts um...
Proc TransformWord Umweg über Word...
Parameters High&,Push%
Declare BitCount%,High!
Let BitCount%=0
While BitCount%<16
IF @TestBit(High&,BitCount%)=1
LET HIGH!=HIGH!+2^(BitCount%+Push%)
endif
inc BitCount%
Wend
Return HIGH!
Endproc
Windowstyle 31
Windowtitle "Diskspace"
Window 0,0-640,440
LET LWERK$="E:"
DIM Free#,8
DIM Total#,8
DIM TOTALFREE#,8
Decimals 0
@GetDiskFreeSpaceEx(@ADDR(LWERK$),Free#,Total#,TOTALFREE#)
LET FREE!=@Word(Free#,0)
TransformWord @Word(Free#,2),16
LET Free!=FREE!+@!(0)
TransformWord @Long(Free#,4),32
LET Free!=Free!+@!(0)
TransformWord @Long(Free#,6),40
LET Free!=Free!+@!(0)
LET Total!=@Word(Total#,0)
TransformWord @Word(Total#,2),16
LET Total!=Total!+@!(0)
TransformWord @Long(Total#,4),32
LET Total!=Total!+@!(0)
TransformWord @Long(Total#,6),40
LET Total!=Total!+@!(0)
LET TOTALFREE!=@Word(TOTALFREE#,0)
TransformWord @Word(TOTALFREE#,2),16
LET TOTALFREE!=TOTALFREE!+@!(0)
TransformWord @Long(TOTALFREE#,4),32
LET TOTALFREE!=TOTALFREE!+@!(0)
TransformWord @Long(TOTALFREE#,6),40
LET TOTALFREE!=TOTALFREE!+@!(0)
Dispose Free#
Dispose Total#
Dispose TOTALFREE#
PRINT "Frei für User=";Free!
Print "Größe der Platte=";Total!
Print "Insgesammt frei=";TOTALFREE!
While 0=0
Waitinput
Wend
[keywords:77dce4ae0a] Speicherplatz Laufwerk frei verfügbar verfügbarer bestimmen erfahren auslesen gesamt [/keywords:77dce4ae0a] |
|
|
| |
|
|