我想从.NET代码中识别DVDR介质。这是有可能的,怎么做的?
某种叫做Windows的库。
更新
我有很多DVDR,我需要识别其中的每一个,但不取决于内容或磁盘名称。每个DVDR在工厂获得的某种序列号。
发布于 2009-07-22 14:38:13
您可以使用IMAPI v2 API实现这一点。
一旦您在.NET项目中获得了正确的引用,以及在该API中定义的各种枚举(其中有相当多的引用!),代码就相对简单了。类似于(伪代码):
IDiscRecorder2 discRecorder = (IDiscRecorder2)[*cd/dvd drive*];
discFormatData.Recorder = discRecorder;
IMAPI_MEDIA_PHYSICAL_TYPE mediaType = discFormatData.CurrentPhysicalMediaType;
string mediaTypeString = GetMediaTypeString(mediaType);
where:
IMAPI_MEDIA_PHYSICAL_TYPE is an enum such like:
public enum IMAPI_MEDIA_PHYSICAL_TYPE
{
    IMAPI_MEDIA_TYPE_UNKNOWN = 0,
    IMAPI_MEDIA_TYPE_CDROM = 1,
    IMAPI_MEDIA_TYPE_CDR = 2,
    IMAPI_MEDIA_TYPE_CDRW = 3,
    IMAPI_MEDIA_TYPE_DVDROM = 4,
    IMAPI_MEDIA_TYPE_DVDRAM = 5,
    [not the complete enum...snipped for brevity!]
}
and the "GetMediaTypeString" function simply gives a friendly string
representation of the enum name.在CodeProject网站上有一篇很好的文章和示例项目,它相当全面地展示了这一点:
用C#和IMAPI2刻录和擦除CD/DVD/Blu射线介质
该项目包含的不仅仅是检测媒体类型(因此是标题!),而是包含代码,以便在烧录/擦除媒体之前有效地检测媒体类型。
从该条中:
确定媒体类型 若要确定硬盘驱动器上的媒体类型和可用空间,请创建一个MsftDiscFormat2Data对象并在recorder属性中设置当前记录器。然后可以从IDiscFormat2Data CurrentPhysicalMediaType属性获取媒体类型。 拥有媒体类型后,创建一个MsftFileSystemImage对象并使用媒体类型调用ChooseImageDefaultsForMediaType方法。
https://stackoverflow.com/questions/1164567
复制相似问题