我得到6作为空白CD的状态结果

时间:2016-01-26 17:04:51

标签: c# imapi

当我在刻录机中插入空白媒体时,我不知道为什么我得到6。根据我的理解,在IMAPI_FORMAT2_DATA_MEDIA_STATE的枚举状态中没有6个。

以下链接包含此状态以及我所基于的示例:MSDN:Checking Media Support

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

2 个答案:

答案 0 :(得分:4)

它相当于一个可标记的枚举。 6是4 + 2,所以状态都是

IMAPI_FORMAT2_DATA_MEDIA_STATE_BLANK
IMAPI_FORMAT2_DATA_MEDIA_STATE_APPENDABLE

答案 1 :(得分:4)

它们是两者的组合,基本上按两个(或更多值)计算按位运算。 当您使用属性Flags创建枚举时,您可以对其执行按位运算,即使它应该在没有属性的情况下工作

IMAPI_FORMAT2_DATA_MEDIA_STATE_BLANK
IMAPI_FORMAT2_DATA_MEDIA_STATE_APPENDABLE

使用IMAPI_FORMAT2_DATA_MEDIA_STATE_APPENDABLE执行“OR”操作的IMAPI_FORMAT2_DATA_MEDIA_STATE_BLANK的值将给出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
}

您可以阅读有关按位操作的更多信息here