Я получаю 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