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ビットでは、期待どおりに動作します。
誰かがこの結果の理由を知っていますか?回避策はありますか?