Winapi con il numero di 64 bit in Masm32
Domanda
Ho bisogno dimensioni determind di un volume logico e stamparlo. GetDiskFreeSpaceEx sta tornando dimensioni come numero a 64 bit (?). Cosa posso fare con esso?
Soluzione
Si può fare quello che vuoi con esso, tuttavia è un po 'scomodo per fare calcoli con in Masm32. Si dovrebbe essere in grado di riempire qualsiasi altra struttura dati che utilizza 64 bit interi. E 'anche possibile fare alcune operazioni aritmetiche su 64 bit come la divisione, caricando il valore in EDX: EAX (così caricare i primi 4 byte in EAX, e il successivo 4 in EDX). Tuttavia, fate attenzione che troppo pieno è possibile qui, che deve essere gestita o evitato.
Se si desidera solo per stampare la dimensione del volume di utilizzare questa funzione si può solo richiamare la funzione di libreria printf C runtime:
invoke crt_printf,chr$("GetDiskFreeSpaceEx, total bytes: %I64d%c"),
dqTotalBytes,10
Tuttavia, come il manuale dice "Per determinare il numero totale di byte su un disco o volume, utilizzare IOCTL_DISK_GET_LENGTH_INFO ." Il codice precedente si dice solo quanti sono disponibili per l'utente corrente.