Hi, I am working on a project, I need to control a CD Drive via the IDE/ATA Interface using a C/C++ program.

My goal is to control the Speed of the Drive, and hopefully the radial position of the optical pickup head.
I am still fairly new to this field, is something like that even possible ( I need to finish it in 2 months)

Any help would be greatly appreciated!


You need to address these questions to the manufacturer's web site. Another idea would be to try asking on a forum for CD software, like ImgBurn.

You may need to ask several times before you get an answer, so don't be afraid to shop around. It's impossible to know how long something like this, might take.

As always, Google is your bud.

Thank you for your response, The problem I have is that the CD Drives I am working on are fairly old and it is difficult to find any supporting info on them through the manufacturers resources. My goal is to develop something generic that can be used on any CD Drive.

You still have two main resources, besides Google:

1) Manufacturer's. CD drives today work a LOT like the CD drives of yesterday, for compatibility reasons.

2) Software (especially free software or open source software), that controls CD drives. You might recall that Linux is entirely open source, AND that it controls CD drives -- hint hint hint. :p

Now get in there and dig around. These answers aren't going to just fall into your lap.

OK I was looking around, to control/access I/O Devices such as a CD Drive the DeviceIoCtl calls can be used.(Windows)
The IOCTL_CDROM_SET_SPEED control code can be used specifically to control the speed of the spindle motor.
I am now looking at how to implement these control codes into a C/C++ Program. Are there any books/tutorials out there that teach how to do this.
I found Microsoft's Windows Developer Center a very good resource!

Any other ideas are still appreciated!

Can you check out linux kernel for this, i guess there you might get ready made driver for cd rom and then you can modify that sa per your requirement.