Jak wysunąć szufladkę CD-ROM-u

Adam Boduch

Uniwersalny sposób dzięki któremu wysuniemy szufladkę z dowolnego napędu optycznego.

#include <windows.h>

/*
...
*/

//otwieramy volumin napędu optycznego (tj. pod literą H)
HANDLE hwnd = CreateFileA("\\\\.\\H:", GENERIC_READ, FILE_SHARE_WRITE | FILE_SHARE_READ, NULL, OPEN_EXISTING, 0, NULL);

if (hwnd != INVALID_HANDLE_VALUE)
{
        DWORD cc;
        //wysuwamy szufladkę
        DeviceIoControl( hwnd, IOCTL_STORAGE_EJECT_MEDIA,
                NULL, 0, NULL, 0, &cc, NULL
        );
        //wsuwamy szufladkę
        DeviceIoControl( hwnd, IOCTL_STORAGE_LOAD_MEDIA,
                NULL, 0, NULL, 0, &cc, NULL
        );
        //zamykamy uchwyt
        CloseHandle(hwnd);
}

9 komentarzy

  1. plagiat - przecież to zupełnie inny sposób jest - sam do tego doszedłem ;-) Poprzedni korzysta z MCI. Poza tym powyższy kod demonstruje jak dobrać się do sprzętu. Można np. odczytywać powierzchnię CD-ROMu (tzn. zgrywać obrazy ISO).
  2. pełno taki rzeczy na necie jest - na tej stronie nie ma nic specjalnie unikatowego ;-) bez urazy

kurde pelno takich rzeczy po necie lata =}
no niby racja, ale niektórzy mają bana na google ;)

Mammoth, nie zmieniaj tego znowu na Delphi. Ten FAQ przeniosłem do działu C++ bo:

  1. Były w nim podane dwa sposoby: implementacji w CPP i Delphi
  2. Implementacja w Delphi jest w kategorii Żarty w Delphi więc ją wywaliłem (bo to duplikat) i zrobiłem to jako FAQ o C++.

I w ten sposób artykuł pierwotnie napisany przez Adama o otwieraniu tacki w Delphi dokonał mutacji do kodu C++ w innej kategorii.
Anyway chyba nie ma sensu trzymać 2 artów o tym samym

Kod CPP w dziale Delphi?
Szczególnie, że coś takiego już jest w mojej kategorii:
CD Machacz

Seigba: i jaki z tego morał?

kurde pelno takich rzeczy po necie lata =}

ja ma dwa CD-room-y i mi nie działa ;-(