[Win32utils-devel] DeviceIoControl + IOCTL_DISK_GET_DRIVE_GEOMETRY problem

Daniel Berger djberg96 at gmail.com
Tue May 6 21:45:53 EDT 2008


On Tue, May 6, 2008 at 7:38 PM, Heesob Park <phasis at gmail.com> wrote:
> Hi,
>
>  2008/5/7 Berger, Daniel <Daniel.Berger at qwest.com>:
>
>
> > 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).
>  >
>  >
>  What do you want to do?
>  DeviceIoControl works not with file handle but with device handle.

<snip>

Hm, is there any way to go from file handle to device handle?

Thanks,

Dan


More information about the win32utils-devel mailing list