lib/device/library/windows.rb in narou-1.5.11 vs lib/device/library/windows.rb in narou-1.6.0
- old
+ new
@@ -8,19 +8,27 @@
module Device::Library
module Windows
def get_device_root_dir(volume_name)
@@FileSystemObject ||= WIN32OLE.new("Scripting.FileSystemObject")
- drive_strings = " " * 1000
- result_len = WinAPI.GetLogicalDriveStrings(1000, drive_strings)
- drives = drive_strings[0, result_len].split("\0")
- drives.each do |drive_letter|
+ get_drives.each do |drive_letter|
drive_info = @@FileSystemObject.GetDrive(drive_letter)
vol = drive_info.VolumeName rescue ""
if vol.downcase == volume_name.downcase
return File.expand_path(drive_letter)
end
end
nil
+ end
+
+ def get_drives
+ result = []
+ bits = WinAPI.GetLogicalDrives
+ 26.times do |i|
+ if bits & (1 << i) != 0
+ result << "#{(65 + i).chr}:\\"
+ end
+ end
+ result
end
end
end