[c#]USB接続デバイス管理 3-デバイス詳細情報取得まとめ

今回は[DeviceID]にて操作を行いたい機器のピックアップを行います。
操作を行いたい機器の[DeviceID]を格納する配列を用意します。
機器の[DeviceID]の調べ方はこちらを参照。

検出したデバイスの詳細情報を取得し、操作を行いたいデバイス状態を調べれる状態にします。
(ManagementObjectオブジェクトの[Properties]プロパティにて取得)
[Win32_PnPEntity]の詳細情報についてはこちらを参照。

    class Program
    {
        // 情報取得コマンド
        static ManagementObjectSearcher MyOCS = new ManagementObjectSearcher("SELECT * FROM Win32_PnPEntity");
        // 取得Object格納
        static ManagementObjectCollection MyOC;
        /// 接続許可機器のDeviceid格納
        static string[] Array_Permit_DeviceID = { "USBSTOR\\DISK&VEN_BUFFALO&PROD_USB_FLASH_DISK&REV_4000\\A085001000075193&0" ,
                                                  "USBSTOR\\DISK&VEN_BUFFALO&PROD_EXTERNAL_HDD&REV_0000\\00000002032664A&0"};

        static void Main(string[] args)
        {
            //接続されてるPnPDeviceの総数
            int CountDevice = MyOCS.Get().Count;
            //1Scan前のPnPDeviceの総数
            int CountDeviceBefour = CountDevice;
            //検出デバイスのDeviceIDを一時格納
            string Value_DeviceID = string.Empty;
            //ループ動作(←ループ条件は、後程要検証)
            while (true)
            {
                MyOC = MyOCS.Get();
                CountDevice = MyOC.Count;
                if (CountDevice != CountDeviceBefour)//ここでデバイス数変化時の処理を行う。
                {
                    string[] Array_DeviceID;//取得ID分解用配列
                    foreach (ManagementObject MyObject in MyCollection)
                    {
                        Value_DeviceID = MyObject["DeviceID"].ToString();
                        Array_DeviceID = Value_DeviceID.Split('\\');
                        if (Array_DeviceID[0].Contains("USB"))//ここで検出時の処理を行う。
                        {
                            for (int i = 0; i < Array_Permit_DeviceID.Length; i++)
                            {
                                if (Array_Permit_DeviceID[i] == Value_DeviceID)//ここでDeviceIDが一致した場合の処理を行う。
                                {break;}
                            }
                        }
                    }
                    Array_DeviceID = null;
                }
                CountDeviceBefour = CountDevice;
            }
        }
    }

ここまでは、デバイスの情報取得と特定となります。
間違い、指摘事項が御座いましたら御教授の程、御願い致します。

【各ページへのリンク】

この記事へのコメント