ここのスレにてqwerty-XXというアプリを宣伝してた者です。
これのインストーラーの立ち位置にいるqwerty-XX copyerが、
空き容量が大きいサイズのドライブに対して「ドライブの残り容量が足りません。」
というダイアログを吐いてそれ以上進めなくなってしまうということが起こっています。
自分でできる限り調べてみたりして自分のわかる範囲で理解しようとしてみました。
で変数disksizeから空き容量を取得できると思ってましたが、
#uselib "kernel32.dll" #func GetDiskFreeSpaceEx "GetDiskFreeSpaceExA" var,int,var,int drivepath="c:\\" GetDiskFreeSpaceEx drivepath,0,disksize,0
GetDiskFreeSpaceEx関数の第2と第4パラメータが空き容量で、
第3は空き容量じゃなくて全部の容量だということがわかりました。
そこで以下に変更しました、
で変数disksizeで空き容量を取得できるようにしました。
#uselib "kernel32.dll" #func GetDiskFreeSpaceEx "GetDiskFreeSpaceExA" var,var,var,var drivepath="c:\\" GetDiskFreeSpaceEx drivepath,NULL,NULL,disksize
しかしdisksizeに返ってきた数値が実際の空き容量と異なってしまってます。
例:
実際の空き容量 885GB 951,234,236,416B
disksizeに返ってきた数値 2046464000
なぜこのようになってしまうのでしょうか?
もしかして返ってきた数値から何か計算を行ったりするのでしょうか?