Можно ли однозначно определить носитель DVDR(W)(+/-) из.NET?

Я хотел бы определить носители DVDR из кода.NET. Это возможно и как?

Какая-то библиотека, которая вызывает Windows API.

ОБНОВИТЬ

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

2 ответа

Вы можете добиться этого с помощью 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 есть хорошая статья и пример проекта, который демонстрирует это довольно подробно:

Запись и стирание CD/DVD/Blu-ray Media с C# и IMAPI2

Этот проект содержит гораздо больше, чем просто обнаружение типа мультимедиа (отсюда и название!), Но содержит код для эффективного определения типа мультимедиа до его записи / стирания.

Из статьи:

Определение типа носителя

Чтобы определить тип носителя и доступное пространство на жестком диске, вы создаете объект MsftDiscFormat2Data и задаете текущий рекордер в свойстве Recorder. Затем вы можете получить тип мультимедиа из свойства IDiscFormat2Data CurrentPhysicalMediaType.

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

Может быть, эта статья, которую я нашел в Code Project, может помочь?

Другие вопросы по тегам