Cd-Rom Açıp Kapatma..
-
WinIOCtl.h icerisinde tanimli olmasi gerek
du ben ilgili tanimlamalari sana yaziyim sen onlari manuel ekle :)
edit:
#define CTL_CODE( DeviceType, Function, Method, Access ) ( \ ((DeviceType) << 16) | ((Access) << 14) | ((Function) << 2) | (Method) \ ) #define FILE_DEVICE_FILE_SYSTEM 0x00000009 #define METHOD_BUFFERED 0 #define FILE_ANY_ACCESS 0 #define FILE_READ_ACCESS ( 0x0001 ) // file & pipe #define IOCTL_STORAGE_BASE 0x0000002d #define FSCTL_LOCK_VOLUME CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 6, METHOD_BUFFERED, FILE_ANY_ACCESS) #define FSCTL_DISMOUNT_VOLUME CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 8, METHOD_BUFFERED, FILE_ANY_ACCESS) #define IOCTL_STORAGE_EJECT_MEDIA CTL_CODE(IOCTL_STORAGE_BASE, 0x0202, METHOD_BUFFERED, FILE_READ_ACCESS)
-
hocam çok teşekkür ederim...
ilgine ayrı teşekkürler :D
-
heh bi ara görmüştüm aklıma geldi linux da cdrom açmayı da ben ekleyim biraz hoplayacak ama olsun arayan saatlerini vermesin internetteki örneklerin çoğu çalışmıyor. :)
ayrıca laptop olduğundan sadece açıyor :| kapamayı deneyemedim :)
---------------------aşağıda ki ayraca kadar olanı kopyalayıp bilmemne.c olarak kaydedin---------------------
#include <stdlib.h>
#include <stdio.h>
#include <sys/types.h>
#include <sys/ioctl.h>
#include <fcntl.h>
#include <linux/cdrom.h>
#include <errno.h>
int main( int argc, char **argv )
{
int cdrom;
int error;
if ((cdrom = open("/dev/sr0",O_RDONLY | O_NONBLOCK)) < 0) {
perror("open");
exit(1);
}
if((error = ioctl(cdrom, CDROMEJECT)) < 0) {
perror("eject ioctl error");
switch(error) {
case ENOSYS:
printf("cd drive not capable of ejecting\n");
break;
case EBUSY:
printf("other processes are accessing drive, or door is locked\n");
break;
}
exit(1);
}
close(cdrom);
return 0;
}
---------------------------------------------------------------
Daha sonra terminale (dosya masaüstünüzde gibi düşünün)
gcc -o sonismi /home/kullanıcı_adı/Desktop/bilmemne.c yazın
/home/kullancı_adı/ klasöründe "sonismi" ne ne yazdıysanız o şekilde derlenmiş dosyayı göreceksiniz. direk terminale ./sonismi yazarsanız cd-rom açılacak :|
kaynak: http://www.linuxquestions.org/questions/slackware-14/cd-rw-doesnt-eject-666082/page2.html#post3265368
GrN nin bahsettiği kaynak şeysinin linuxdaki yolu:
/usr/include/linux/cdrom.h
/usr/include/sys/ioctl.h ...
kısaca bu #include şeylerinin alayı burda :D
edit: kernel versiyonum 2.6.35-28 .. daha ileriki versiyonlarda çalışmazsa sövmeyin ona göre! :|