Я пытаюсь определить, является ли носитель DVD-RAM пустым или нет, с C ++ в Windows. Самый простой выбор - использовать 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 бит работает как положено.
Кто-нибудь знает причину этого результата? Есть ли обходной путь?