2009-07-22 1 views
5

Я хотел бы определить носители DVDR из кода .NET. Это возможно и как?Могу ли я однозначно идентифицировать среду DVDR (W) (+/-) от .NET?

Некоторые библиотеки, которые называют Windows API.

UPDATE

У меня есть много DVDRs, и мне нужно, чтобы идентифицировать каждого из них, но не зависит от содержания или имя диска. Какой-то серийный номер каждого DVDR, который DVDR получает на заводе.

ответ

2

Вы можете достичь этого, используя API IMAPI v2.

Как только у вас есть правильные ссылки в вашем проекте .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 и установить текущий регистратор в свойстве Recorder , Затем вы можете получить тип носителя из свойства IDiscFormat2Data CurrentPhysicalMediaType.

Как только у вас есть тип носителя, создайте объект MsftFileSystemImage и вызовите метод ChooseImageDefaultsForMediaType с типом носителя.

Смежные вопросы