[python-win32] Eject a CD with win32file?
Joel Lawhead
jlawhead@bellsouth.net
Sat, 23 Nov 2002 16:23:40 -0600
Hi,
I'm trying to programatically eject a cd on a Win2k machine in Python.
I found a simple working example in C with source and an executable at:
<http://memberwebs.com/nielsen/windows/eject/>.
Based on that program and some research on MSDN it appears the steps for
ejecting a CD-ROM are to first get a file handle for the device using
win32file.CreateFile and then call win32file.DeviceIoControl() with the
IOCTL_STORAGE_EJECT_MEDIA flag.
I tried:
import win32file
from win32con import *
# Get a file handle for the CD-ROM device
hdevice = win32file.CreateFile('\\\\.\\G:', 0, 0,None,OPEN_EXISTING,0,0)
# Eject the cd
win32file.DeviceIoControl(hdevice,2,"", 0, None)
The win32file.CreateFile() returns without error. But the
win32file.DeviceIoControl() call returns:
Traceback (most recent call last):
File "<stdin>", line 1, in ?
pywintypes.api_error: (1, 'DeviceIoControl', 'Incorrect function.')
The second parameter in DeviceIoControl is an integer but I don't know
what it is and have been guessing with several numbers to no avail. All
the documentation simply refers to the constant
"IOCTL_STORAGE_EJECT_MEDIA" and not an integer. So I'm not sure if that
call is my problem or if it's something else.
To get the job done of course I could always make an os.system() call to
the command line "eject.exe" program I mentioned above, but I feel like
I'm pretty close to doing it with Python and the win32 extenstions.
I don't have a lot of experience working with windows mfc calls so any
help would be appreciated.
Thanks,
Joel