我可以从.NET中唯一标识DVDR(W)(+/-)媒体吗?

问题描述:

我想从.NET代码中识别DVDR介质。这是可能的和如何?我可以从.NET中唯一标识DVDR(W)(+/-)媒体吗?

某种调用Windows API的库。

UPDATE

我有很多DVDRs的,我需要找出他们每个人,而不是依赖于内容或磁盘名称。每个DVDR的某种序列号,DVDR出厂时的序列号。

也许这可以帮助我发现文章Code Project

您可以使用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上的网站上的好文章和示例项目演示此相当全面:

Burning and Erasing CD/DVD/Blu-ray Media with C# and IMAPI2

该项目包含的不仅仅是检测更媒体类型(因此是标题!),但确实包含代码以在刻录/擦除媒体之前有效检测媒体类型。

从文章:

确定媒体类型

要确定硬盘上的媒体类型和可用空间,为您营造一个MsftDiscFormat2Data对象,并设置在记录属性的当前记录。然后您可以从IDiscFormat2Data CurrentPhysicalMediaType属性中获取媒体类型。

获得媒体类型后,创建一个MsftFileSystemImage对象,并使用媒体类型调用ChooseImageDefaultsForMediaType方法。