Можно ли однозначно определить носитель 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, может помочь?