Hello, I have downloaded some coding off the internet and modified it to suit my needs. It opens and closes the CD drive ONCE. And I would like to make it do so an infinate amount of times.

#include "windows.h"
#include "winioctl.h"
#include <string>
using std::string;
 
 
int main(int argc, char* argv[])
{
 
 string sdrive("\\\\.\\e:");		   //replace 'g' by the drive letter of the cdrom
 
 HANDLE hcd = CreateFile(sdrive.c_str(), 
  GENERIC_READ, 
  FILE_SHARE_READ,
  NULL, 
  OPEN_EXISTING, 
  FILE_ATTRIBUTE_READONLY, 
  NULL);
 
 if (hcd == INVALID_HANDLE_VALUE)
  printf("Could not open drive g:\\\n");
 
 DWORD d = 0;
 DeviceIoControl(hcd, IOCTL_STORAGE_EJECT_MEDIA, NULL, 0, NULL, 0,
   &d, NULL);
  DeviceIoControl(hcd, IOCTL_STORAGE_LOAD_MEDIA, NULL, 0, NULL, 0,
   &d, NULL);
 CloseHandle(hcd);
 
 return 0;
 
}

Thank you all!

Recommended Answers

All 5 Replies

This is the third time I'm going to tell you to : PLEASE USE CODE tags

You need a loop around the two DeviceIoControl() lines like : while(1){ DeviceIoControl things } DWORD d = 0; This line is useless

Sorry, I don't really know where to put this and how to declare it. Could you maybe show me exactly what to do?

Thanks

As I said:

while(1)
{
DeviceIoControl(hcd, IOCTL_STORAGE_EJECT_MEDIA, NULL, 0, NULL, 0,
&d, NULL);
DeviceIoControl(hcd, IOCTL_STORAGE_LOAD_MEDIA, NULL, 0, NULL, 0,
&d, NULL);
}

I get an error message that &d is undeclared, can you help?

Thanks

is this line still there?

DWORD d = 0;
Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.