/* Sama VB:llä (MCI)
Private Declare Function mciSendString Lib "winmm.dll" Alias "mciSendStringA" (ByVal lpstrCommand As String, ByVal lpstrReturnString As String, ByVal uReturnLength As Long, ByVal hwndCallback As Long) As Long
mciSendString "set cd door open", 0, 0, 0
*/

#include "windows.h"
#include <stdio.h>

int main(int argc, char* argv[])
{
	HANDLE hDevice;
	BOOL bResult; 
	DWORD junk; 

	int nDrive=0;
	BOOL bClose=FALSE;
	if (argc>1)
	{
		if (strcmp(argv[1],"close")==0)
		{
			bClose=TRUE;
			if (argc>2)
				nDrive=atoi(argv[2]);
		}
		else
			nDrive=atoi(argv[1]);
	}  
	char szDrive[20];
	sprintf(szDrive,"\\\\.\\cdrom%d",nDrive);
		

	hDevice = CreateFile(szDrive,GENERIC_READ|GENERIC_WRITE,FILE_SHARE_READ | FILE_SHARE_WRITE,
                       NULL,OPEN_EXISTING,0,NULL);

	if (hDevice == INVALID_HANDLE_VALUE)
	    return (FALSE);
	
	if (!bClose)
	{
		bResult = DeviceIoControl(hDevice,
			IOCTL_STORAGE_EJECT_MEDIA,NULL, 0,NULL,0,&junk,NULL);
	}
	else
	{
		bResult = DeviceIoControl(hDevice,
			IOCTL_STORAGE_LOAD_MEDIA,NULL, 0,NULL,0,&junk,NULL);
	}

	CloseHandle(hDevice);
	
	

	return 0;
}

