folder Tahribat.com Forumları
linefolder C - C++
linefolder Cd-Rom Açıp Kapatma..



Cd-Rom Açıp Kapatma..

  1. KısayolKısayol reportŞikayet pmÖzel Mesaj
    guru
    guru's avatar
    Kayıt Tarihi: 30/Mart/2007
    Erkek

    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)


    ..
  2. KısayolKısayol reportŞikayet pmÖzel Mesaj
    berkeraaa
    berkeraaa's avatar
    Kayıt Tarihi: 30/Aralık/2009
    Erkek

    hocam çok teşekkür ederim...

    ilgine ayrı teşekkürler :D

  3. KısayolKısayol reportŞikayet pmÖzel Mesaj
    tarzan
    tarzan's avatar
    Kayıt Tarihi: 30/Mart/2007
    Erkek

    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! :|

     

     


    Çalışmadan, yorulmadan, öğrenmeden rahat yaşama yollarını itiyat haline getiren milletler; önce haysiyetlerini, sonra istikballerini daha sonra da hürriyetlerini kaybetmeye mahkumdurlar. M. Kemal Atatürk
Toplam Hit: 3845 Toplam Mesaj: 14