simple cd/dvd eject/load in win32 (2000/xp/vista/server2003)

Share your advanced PureBasic knowledge/code with the community.
User avatar
bingo
Enthusiast
Enthusiast
Posts: 210
Joined: Fri Apr 02, 2004 12:21 pm
Location: germany/thueringen
Contact:

simple cd/dvd eject/load in win32 (2000/xp/vista/server2003)

Post by bingo »

Code: Select all

#IOCTL_STORAGE_EJECT_MEDIA = $D4808
#IOCTL_STORAGE_LOAD_MEDIA = $2D480C

hDevice = CreateFile_("\\.\Cdrom0",#GENERIC_READ,#FILE_SHARE_READ,0,#OPEN_EXISTING,0,0)
    
If hDevice <> #INVALID_HANDLE_VALUE
  
DeviceIoControl_(hDevice,#IOCTL_STORAGE_EJECT_MEDIA,0,0,0,0,@bytesReturned,0)
Debug @bytesReturned

Delay(5000)

DeviceIoControl_(hDevice,#IOCTL_STORAGE_LOAD_MEDIA,0,0,0,0,@bytesReturned,0)
Debug @bytesReturned

CloseHandle_(hDevice)

EndIf
8)

\\.\Cdrom0 the physical first cd/dvd
\\.\Cdrom1 the physical second cd/dvd
...
["1:0>1"]
User avatar
Le Soldat Inconnu
Enthusiast
Enthusiast
Posts: 306
Joined: Wed Jul 09, 2003 11:33 am
Location: France

Post by Le Soldat Inconnu »

Nice

It's work too with drive letter

example :

Code: Select all

#IOCTL_STORAGE_EJECT_MEDIA = $D4808 
#IOCTL_STORAGE_LOAD_MEDIA = $2D480C 

hDevice = CreateFile_("\\.\F:",#GENERIC_READ,#FILE_SHARE_READ,0,#OPEN_EXISTING,0,0) 
    
If hDevice <> #INVALID_HANDLE_VALUE 
  
  DeviceIoControl_(hDevice,#IOCTL_STORAGE_EJECT_MEDIA,0,0,0,0,@bytesReturned,0) 
  Debug @bytesReturned 
  
  Delay(3000) 
  
  DeviceIoControl_(hDevice,#IOCTL_STORAGE_LOAD_MEDIA,0,0,0,0,@bytesReturned,0) 
  Debug @bytesReturned 
  
  CloseHandle_(hDevice) 
  
EndIf 
LSI
sartic
Enthusiast
Enthusiast
Posts: 143
Joined: Thu Aug 26, 2010 8:26 am

Re: simple cd/dvd eject/load in win32 (2000/xp/vista/server2

Post by sartic »

not working here (win7 32bit)
another solution?
Registered user of PB (on Linux Mint 21.1 & Win 10 64bit)
User avatar
tola
User
User
Posts: 13
Joined: Tue May 03, 2011 10:13 am
Location: France - Loire 42

Re: simple cd/dvd eject/load in win32 (2000/xp/vista/server2

Post by tola »

Hello,

I know it's a old post but i see an error in constant values.

"#IOCTL_STORAGE_EJECT_MEDIA = $D4808" is bad ....

"#IOCTL_STORAGE_EJECT_MEDIA = $2D4808" is right and, after, it's work on 7...

good night...
+--=--=--=--=--=--=--=--=--=--+
french coder
Post Reply