Обнаружение c # usb

У нас есть несколько процессов в текущем приложении. Один процесс отвечает за обнаружение и удаление загрузчика USB. Код для обработки обнаружения и удаления, как показано ниже.

protected override void WndProc(ref Message m)
        {
            switch (m.Msg)
            {
                case Win32.WM_DEVICECHANGE: OnDeviceChange(ref m);
                    break;
            }
            base.WndProc(ref m);
        }

private void OnDeviceChange(ref Message msg)
        {
            int wParam = (int)msg.WParam;
            Win32.DEV_BROADCAST_VOLUME dbVol = new Win32.DEV_BROADCAST_VOLUME();
            Win32.DEV_BROADCAST_HDR msgDevHeader = new Win32.DEV_BROADCAST_HDR();
            const int DBT_DEVTYP_VOLUME = 0x00000002;
            string loaderUpdates;

            switch (wParam)
            {
                case Win32.DBT_DEVICEARRIVAL:
                    int devType = Marshal.ReadInt32(msg.LParam, 4);

                    if (devType == DBT_DEVTYP_VOLUME)
                    {
                    }
                    break;

                case Win32.DBT_DEVICEREMOVECOMPLETE:

                                     break;
            }
        }

Когда я запускаю процесс, который обрабатывает USB-загрузчик в режиме отладки в среде Visual Studio, он правильно определяет USB. но все же я получаю несколько сообщений. получает сообщение со значением wparam как «7» 3 раза, а затем получает значение wparam как «32768 (0x8000 / DBT_DEVICEARRIVAL)» . Это нормально?

Когда я запускаю все остальные процессы вместе с процессом, который обнаруживает USB, кажется, что это всегда только полученное сообщение со значением wparam как "7". получает сообщение с wparam как "7" 5 раз. Нет сообщения со значениями wparam как "(0x8000 / DBT_DEVICEARRIVAL)". в чем может быть проблема?

Оцените любые предложения / решения.

С уважением Raju

5
задан Luke Quinane 31 March 2011 в 00:45
поделиться