2010-10-19 49 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毫秒才能返回,我假设我们确实弹出了介质。如果弹出命令完成得太快,那么假设托盘已打开并需要关闭。 它似乎有办法实现一个打开/关闭切换功能。 时间会告诉:)