【发布时间】:2011-10-02 19:42:54
【问题描述】:
我正在尝试使用 Windows 上的 C++ 检测 DVD-RAM 介质是否为空。最简单的选择是使用 IMAPI(版本 2) - 样板代码省略:
IMAPI_FORMAT2_DATA_MEDIA_STATE state;
HRESULT hr;
// ... Initialize an MsftDiscFormat2Data COM object and put recorder
hr = format->get_CurrentMediaStatus( &state );
// ... Verify returned status ...
return (state & IMAPI_FORMAT2_DATA_MEDIA_STATE_BLANK);
此代码通常可以完美运行。但是,对于 DVD-RAM,它会给出错误的结果:在返回状态中启用的唯一标志是 IMAPI_FORMAT2_DATA_MEDIA_STATE_OVERWRITE_ONLY (= 0x1)。 在 Windows Vista 32 位上,它可以按预期工作。
有人知道这个结果的原因吗?有什么解决办法吗?
【问题讨论】:
-
有趣:我尝试了艰难的方式,并直接向设备发送了带有 SCSIOP_READ_DISC_INFORMATION 请求的 IOCTL_SCSI_PASS_THROUGH。我得到的信息与 IMAPI 的结果一致:媒体未标记为空白。
标签: c++ windows-7-x64 dvd imapi