- PR -

【VB.net2003】磁気テープの有無確認方法

投稿者投稿内容
シロ
常連さん
会議室デビュー日: 2005/05/15
投稿数: 34
投稿日時: 2006-07-10 18:14
回答ありがとうございます。

System.Environment.GetLogicalDrivers()

System.IO.Directory.GetLogicalDrivers()
も取得できませんでした。。。

#エラーコード取得にはいろんな方法があるんですね。
うにくま
ベテラン
会議室デビュー日: 2005/11/05
投稿数: 82
投稿日時: 2006-07-10 18:40
テープドライブが無いので動作確認していませんが、以下でできないでしょうか?
コード:
    ObjectQuery query = new ObjectQuery("select * from Win32_TapeDrive where deviceid='tape0'");
    ManagementObjectSearcher searcher = new ManagementObjectSearcher(query);
    ManagementObjectCollection tapes = searcher.Get();
    if (tapes.Count > 0)
    {
        //・・・
    }

じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-07-10 19:31
引用:

カルガモさんの書き込み (2006-07-10 17:57) より:

ドライブ名ですが、System.Environment.GetLogicalDrivers() や System.IO.Directory.GetLogicalDrivers() でも取得できないでしょうか?


GetLogicalDrives メソッド ('ドライバ' ではないです) は、
全ドライブのドライブ レターを取得するだけですので、
結局のところ、"どの" ドライブ レターが、テープデバイスなのかはわかりません。

# ですので、うにくま さんの案になるでしょう。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
シロ
常連さん
会議室デビュー日: 2005/05/15
投稿数: 34
投稿日時: 2006-07-12 12:02
お返事遅くなってすみません。

うにくまさんに教えていただいた方法を試そうと思ったのですが、
importsができずに実行することができませんでした。。。

他のドライブ(C)で試したところ、
TAPE0と同じエラーが発生しました。
APIの宣言が根本的なところで間違っているのでしょうか?
マーシャライズする必要等あるのでしょうか?
うにくま
ベテラン
会議室デビュー日: 2005/11/05
投稿数: 82
投稿日時: 2006-07-12 12:56
引用:

importsができずに実行することができませんでした。。。


参照設定で"System.Management"を追加してください。
シロ
常連さん
会議室デビュー日: 2005/05/15
投稿数: 34
投稿日時: 2006-07-12 13:08
教えていただいたコードを試してみましたがダメでした。
取得自体ができなくて。。。

そろそろあきらめようと思っています。

色々、ありがとうございました。
m.ku
大ベテラン
会議室デビュー日: 2002/09/15
投稿数: 184
投稿日時: 2006-07-12 16:20
とりあえず質問者は、OSとか機器構成とか、どういうコードを実際に試し・その結果がどうなったが期待した内容はこうだった、という具体性を持たせた方がより適切なQ&Aになると思う。次回質問する時にはそういう方向性の書き方を検討してみると解決の可能性は上がるでしょう。

スキルアップ/キャリアアップ(JOB@IT)