1

USB ディスク、スマートカード リーダーなどのすべてのリムーバブル メディア デバイス、および C# を使用して Windows システムの指紋リーダー、統合カメラなどの統合デバイスに関する詳細情報を取得したいと考えています。「Win32_LogicalDisk」クラスにクエリを実行しようとしましたが、あまり役立つ結果が得られなかったので、WMI を介して実行できる場合は、詳細なアプローチを教えてください。また、Windows API「DeviceIOControl」もありますが、この点で大いに役立ちますか?

4

1 に答える 1

1

以下のクラスは確認しましたか?

  System.IO.DriveInfo

このクラスで提供される情報以外に、どのような詳細情報をお探しですか?

http://msdn.microsoft.com/en-us/library/system.io.driveinfo.aspx

この名前空間で他のクラスを確認できます。

コメントに基づいて編集します。

実行時にデバイスを検出する場合は、次を使用できます。

ManagementEventWatcher & WqlEventQuery

以下に例を示します。

WqlEventQuery _q = new WqlEventQuery("__InstanceOperationEvent", "TargetInstance ISA    'Win32_USBControllerDevice' ");
        _q.WithinInterval = TimeSpan.FromSeconds(1);
        _usbWatcher = new ManagementEventWatcher(_q);
        _usbWatcher.EventArrived += new   EventArrivedEventHandler(OnUSBDetectedOrDetached);
        _usbWatcher.Start();

そしてイベントハンドラーで:

void OnUSBDetectedOrDetached(object sender, EventArrivedEventArgs e)
    {
        ManagementBaseObject _o = e.NewEvent["TargetInstance"] as ManagementBaseObject;
        if (_o != null)
        {
            using (ManagementObject mo = new ManagementObject(_o["Dependent"].ToString()))
            {
                if (mo != null)
                {
                    try
                    {
                        string devId = string.Empty;
                        devId = mo.GetPropertyValue("DeviceID").ToString();
                        if (devId != string.Empty)
                        {
                            Trace.WriteLine("Detected USB Device, DevId: " + devId);
                        }
....
于 2013-07-18T08:56:41.380 に答える