[Win32utils-devel] DeviceIoControl + IOCTL_DISK_GET_DRIVE_GEOMETRY problem

Berger, Daniel Daniel.Berger at qwest.com
Tue May 6 17:05:04 EDT 2008


Hi all,

Ok, what am I doing wrong here?

require 'windows/device_io'
require 'windows/handle'
require 'windows/error'
include Windows::DeviceIO
include Windows::Handle
include Windows::Error

fh = File.open('test.txt') # Assume you have this

handle = get_osfhandle(fh.fileno)

if handle == INVALID_HANDLE_VALUE
   puts "get_osfhandle failed" 
   fh.close
   exit
end

buf   = 0.chr * 24 # sizeof(DISK_GEOMETRY)
bytes = [0].pack('L')

bool = DeviceIoControl(
   handle,
   IOCTL_DISK_GET_DRIVE_GEOMETRY(), # 458752
   nil,
   0,
   buf,
   buf.size,
   bytes,
   0
)

# Fails here
unless bool
   puts "DeviceIoControl failed: " + get_last_error
   fh.close
   exit
End

fh.close

Thanks,

Dan

PS - I've added several IOCTL macro methods to Windows::DeviceIO in CVS
(part of windows-pr).


This communication is the property of Qwest and may contain confidential or
privileged information. Unauthorized use of this communication is strictly 
prohibited and may be unlawful.  If you have received this communication 
in error, please immediately notify the sender by reply e-mail and destroy 
all copies of the communication and any attachments.


More information about the win32utils-devel mailing list