windows環境でrubyを使用してディスクの残り容量を調べる

既出かもしれないが、探しててはまったので、メモしておく

どーやら、既存のライブラリはなさそうなので、win32apiで調べるしかない模様。
最初は、GetFreespaceやGetDiskFreeSpaceにはまったのは内緒だ:p

とりあえず動くソースはこんな感じ
require 'Win32API'

obj = Win32API.new('kernel32', 'GetDiskFreeSpaceEx', 'pppp', "I")

dummy = "\0" * 8
free = "\0" * 8
total = "\0" * 8
path = String.new(ARGV[0])
a= obj.call(path,dummy,total,free)

p a,dummy,free,total

p total.unpack('q').shift #ディスク容量のバイト数
p free.unpack('q').shift #ディスクの空き容量のバイト数


情報ソースはここら辺
http://www.monochrome.jp/~katsuwo/diary/?200302b&to=200302173#200302173
http://www.microsoft.com/japan/developer/library/jpwinpf/_win32_getdiskfreespaceex.htm