2010-10-19 47 views
3

我寫了一小段代碼來使用DeviceIoControl API和適當的IOCTL打開/關閉CD/DVD驅動器托盤,但我似乎無法檢查托盤狀態。檢查光盤托盤狀態

根據msdn頁面(http://msdn.microsoft.com/en-us/library/aa363404%28v=VS.85%29.aspx),IOCTL_STORAGE_CHECK_VERIFY應該成功,如果驅動器加載了有效的媒體和失敗,否則與適當的錯誤代碼。

所以當DeviceIoControl的失敗,我預計21作爲lasterror當托盤打開,1112當托盤被關閉,但有一個在設備沒有媒體。然而它只會返回21,直到正確的媒體加載。

我錯過了什麼嗎?有沒有其他的方法來找出托盤狀態?

最好的問候,

+0

DeviceIoControl方法的返回值是什麼? – 2011-06-14 13:13:33

回答

0

好了,documentation爲它返回是否有該驅動器的磁盤和一無所知托盤是打開還是不是這個API的狀態。關於哪個錯誤代碼返回的具體要求沒有記錄。我在這兩種情況下也得到21分。

我回顧了文檔,找不到任何記錄的方式來完成您提出的問題。對於大多數應用來說,托盤是否打開並不是那麼有趣。

0

我找不到讀取驅動器托盤狀態的方法。相反,我正在檢查執行彈出命令所需的時間,如解釋there所示,如果彈出需要超過100毫秒才能返回,我假設我們確實彈出了介質。如果彈出命令完成得太快,那麼假設托盤已打開並需要關閉。 它似乎有辦法實現一個打開/關閉切換功能。 時間會告訴:)