0

論理ボリュームのサイズを決定して印刷する必要があります。GetDiskFreeSpaceExは、サイズを64ビットの数値(?)として返します。私はそれで何ができますか?

4

1 に答える 1

1

それを使って好きなことをすることができますが、masm32で計算を行うのは少し厄介です。64ビット整数を使用する他のデータ構造を埋めることができるはずです。値をEDX:EAXにロードすることにより、除算などの64ビットでいくつかの算術演算を実行することもできます(したがって、最初の4バイトをEAXにロードし、次の4バイトをEDXにロードします)。ただし、ここではオーバーフローが発生する可能性があることに注意してください。オーバーフローは処理または回避する必要があります。

この関数を使用してボリュームのサイズを出力するだけの場合は、Cランタイムライブラリのprintf関数を呼び出すことができます。

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

ただし、マニュアルに「ディスクまたはボリュームの合計バイト数を確認するには、IOCTL_DISK_GET_LENGTH_INFOを使用してください」と記載されています。前のコードは、現在のユーザーが利用できる数だけを示しています。

于 2009-12-13T16:37:34.150 に答える