Я получаю 6 как результат государства для чистого CD

Я не знаю, почему я получаю 6 в результате, когда я вставляю чистый носитель в мою горелку. Насколько я понимаю, нет 6 в состоянии перечисления IMAPI_FORMAT2_DATA_MEDIA_STATE,

Вот ссылка, которая содержит эти состояния и пример, на котором я основан: MSDN: Проверка поддержки мультимедиа.

var state = dataWriter.CurrentMediaStatus;                        
Debug.WriteLine((int)state); // outputs 6

2 ответа

Решение

Это комбинация обоих из них, в основном побитовая операция рассчитывается по двум (или более значениям). Когда вы делаете перечисление с атрибутом Flags тогда вы можете выполнять над ним побитовые операции, даже если он работает без атрибута

IMAPI_FORMAT2_DATA_MEDIA_STATE_BLANK
IMAPI_FORMAT2_DATA_MEDIA_STATE_APPENDABLE

Значение IMAPI_FORMAT2_DATA_MEDIA_STATE_BLANK с операцией 'ИЛИ' с IMAPI_FORMAT2_DATA_MEDIA_STATE_APPENDABLE даст 6 в C#, это будет значение = 2 | 4;

Чтобы пойти дальше, если вы хотите проверить, содержит ли значение определенную опцию, вы можете пойти дальше и сделать что-то вроде этого

if ((value & IMAPI_FORMAT2_DATA_MEDIA_STATE_BLANK) == IMAPI_FORMAT2_DATA_MEDIA_STATE_BLANK)
{
//IMAPI_FORMAT2_DATA_MEDIA_STATE_BLANK is contained
}

Вы можете прочитать больше о побитовых операциях здесь

Это эквивалентно флагманскому перечислению. 6 - это 4 + 2, поэтому состояние

IMAPI_FORMAT2_DATA_MEDIA_STATE_BLANK
IMAPI_FORMAT2_DATA_MEDIA_STATE_APPENDABLE
Другие вопросы по тегам