我已经编写了一小段代码来使用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
,但设备中没有介质。但是,它只会返回ojit_code,直到加载了正确的媒体。
我错过了什么吗?还有其他方法可以找出纸盘状态吗?
最好的祝福,
最佳答案
好吧,此API的documentation声明它返回驱动器中是否有磁盘,而未返回有关托盘是否打开的信息。没有记录有关返回哪个错误代码的特定要求。在两种情况下我也都得到21分。
我查看了文档,但是找不到任何记录的方式来完成您所要求的操作。对于大多数应用程序而言,托盘是否打开并不那么有趣。
关于.net - 检查CD-ROM托盘状态,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3969435/