检查CD-ROM托盘状态

时间:2010-10-19 14:32:18

标签: .net windows cd-rom

我已经使用DeviceIoControl API和正确的IOCTL编写了一小段代码来打开/关闭CD / DVD驱动器托盘,但我似乎无法检查托盘状态。

根据msdn页面(http://msdn.microsoft.com/en-us/library/aa363404%28v=VS.85%29.aspx),如果驱动器加载了有效的媒体,则IOCTL_STORAGE_CHECK_VERIFY应该成功,否则会出现相应的错误代码。

因此,当DeviceIoControl失败时,我预计托盘打开时21lasterror,托盘关闭时1112但设备中没有介质。然而,它只返回21,直到加载了适当的媒体。

我错过了什么吗?还有其他方法可以找出托盘状态吗?

最诚挚的问候,

2 个答案:

答案 0 :(得分:0)

嗯,此API的documentation表示它返回驱动器中是否有磁盘,而不管托盘是否打开。没有记录关于返回错误代码的具体要求。在这两种情况下我都得到21分。

我查看了文档,找不到任何记录的方法来执行您的要求。对于大多数应用来说,托盘是否打开并不是那么有趣。

答案 1 :(得分:0)

我找不到一种方法来读取驱动器托盘的状态。相反,我正在检查执行弹出命令所需的时间,如解释there,如果弹出返回需要超过100毫秒,我假设我们确实弹出了媒体。如果弹出命令完成得太快,则假设托盘已打开并需要关闭。 它似乎可以实现打开/关闭切换功能。 时间会证明:)