Pergunta

Eu preciso determind tamanho de um volume lógico e imprimi-lo. GetDiskFreeSpaceEx está retornando tamanho como o número de 64 bits (?). O que posso fazer com ele?

Foi útil?

Solução

Você pode fazer o que quiser com ele, no entanto, é um pouco estranho para fazer cálculos com no masm32. Você deve ser capaz de preencher qualquer outra estrutura de dados que usa 64 bit inteiros. Também é possível fazer algumas operações aritméticas sobre 64 bits, tais como a divisão, pelo carregamento do valor em EDX: EAX (assim carregar os primeiros 4 bytes em EAX, e o lado 4 num EDX). No entanto, cuidado que transbordam é possível aqui, que precisa ser tratada ou evitada.

Se você quiser apenas para imprimir o tamanho do volume de utilizar esta função você pode simplesmente invocar a função de biblioteca printf de tempo de execução C:

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

No entanto, como diz o manual "Para determinar o número total de bytes em um disco ou volume, use IOCTL_DISK_GET_LENGTH_INFO ." O código anterior só informa quantos estão disponíveis para o usuário atual.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top