Frage

Ich brauche Größe eines logischen Volumes ermitteln und ausdrucken. GetDiskFreeSpaceEx kehrt Größe als 64-Bit-Zahl (?). Was kann ich tun damit?

War es hilfreich?

Lösung

Sie können tun, was man will, aber es ist ein wenig umständlich Berechnungen zu tun mit in masm32. Sie sollten andere Datenstruktur füllen können, die 64-Bit-Integer verwendet. Es ist auch möglich, einige arithmetischen Operationen mit 64 Bit wie Division zu tun, indem sie den Wert in EDX geladen: EAX (also die ersten 4 Bytes in EAX laden, und die nächsten 4 in EDX). Doch Vorsicht, dass Überlauf möglich ist hier, die behandelt oder vermieden werden muss.

Wenn Sie wollen einfach nur aus der Größe des Volumens drucken diese Funktion verwenden, können Sie nur die Funktion C-Laufzeitbibliothek printf aufrufen:

invoke crt_printf,chr$("GetDiskFreeSpaceEx, total bytes: %I64d%c"),
                  dqTotalBytes,10

Wie jedoch das Handbuch sagt „Um die Gesamtzahl der Bytes auf einer Festplatte oder Partition verwenden IOCTL_DISK_GET_LENGTH_INFO ." Der vorherige Code nur sagt Ihnen, wie viele auf den aktuellen Benutzer zur Verfügung stehen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top