論理ボリュームのサイズを決定して印刷する必要があります。GetDiskFreeSpaceExは、サイズを64ビットの数値(?)として返します。私はそれで何ができますか?
質問する
219 次
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 に答える