我想從.NET代碼中識別DVDR介質。這是可能的和如何?我可以從.NET中唯一標識DVDR(W)(+/-)媒體嗎?
某種調用Windows API的庫。
UPDATE
我有很多DVDRs的,我需要找出他們每個人,而不是依賴於內容或磁盤名稱。每個DVDR的某種序列號,DVDR出廠時的序列號。
我想從.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方法。