5

.NET コードから DVDR メディアを識別したいと考えています。それは可能で、どのように?

Windows API を呼び出すある種のライブラリ。

アップデート

多くの DVDR があり、それぞれを識別する必要がありますが、コンテンツやディスク名には依存しません。DVDR が工場で取得する、各 DVDR のある種のシリアル番号。

4

2 に答える 2

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 の Web サイトには、これをかなり包括的に示した優れた記事とサンプル プロジェクトがあります。

C# と IMAPI2 を使用した CD/DVD/Blu-ray メディアの書き込みと消去

そのプロジェクトには、メディアの種類を検出するだけでなく (したがって、タイトルです!)、メディアを書き込む/消去する前にメディアの種類を効果的に検出するためのコードが含まれています。

記事から:

メディア タイプの決定

メディアの種類とハード ドライブの空き容量を確認するには、MsftDiscFormat2Data オブジェクトを作成し、Recorder プロパティに現在のレコーダーを設定します。次に、IDiscFormat2Data CurrentPhysicalMediaType プロパティからメディア タイプを取得できます。

メディア タイプを取得したら、MsftFileSystemImage オブジェクトを作成し、メディア タイプで ChooseImageDefaultsForMediaType メソッドを呼び出します。

于 2009-07-22T14:38:13.113 に答える
1

おそらく、 Code Projectで見つけたこの記事が役に立ちますか?

于 2009-07-22T13:01:18.280 に答える