Pregunta

Necesito determinar el tamaño de un volumen lógico e imprimirlo. GetDiskFreeSpaceEx está volviendo tamaño como el número de 64 bits (?). ¿Qué puedo hacer con él?

¿Fue útil?

Solución

Puede hacer lo que quiera con él, sin embargo, es un poco difícil de hacer cálculos con en masm32. Usted debe ser capaz de llenar cualquier otra estructura de datos que utiliza enteros de 64 bits. También es posible hacer algunas operaciones aritméticas sobre 64 bits tales como la división, mediante la carga del valor en EDX: EAX (así cargar los primeros 4 bytes en EAX, y el siguiente 4 en EDX). Sin embargo, ten en cuenta que es posible aquí desbordamiento, que necesita ser manejado o evitado.

Si lo que desea es imprimir el tamaño del volumen de utilizar esta función sólo puede invocar la función de biblioteca printf C en tiempo de ejecución:

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

Sin embargo, como dice el manual "Para determinar el número total de bytes en un disco o volumen, utilice IOCTL_DISK_GET_LENGTH_INFO." El código anterior sólo le dice cuántos están disponibles para el usuario actual.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top