Как определить, когда устройство было подключено/отключено?

Я пробовал следующее:

Protected Overrides Sub WndProc(ByRef m As System.Windows.Forms.Message)
    Const WM_DEVICECHANGE As Integer = &H219
    Const DBT_DEVICEARRIVAL As Integer = &H8000

    If m.Msg = WM_DEVICECHANGE Then
      If m.LParam.ToInt32=DBT_DEVICEARRIVAL
        MessageBox.Show("Device arrival")
      End IF
    End If

    MyBase.WndProc(m)
End Sub

Но m.LParam постоянно возвращает значение 7, поэтому я не могу определить, когда устройство добавлено. Я хочу, чтобы моя программа могла определять, когда аппаратное обеспечение было добавлено, и если это конкретное устройство, то выполнять какое-либо действие (меня не интересуют запоминающие устройства USB, поэтому, пожалуйста, не присылайте мне какие-либо примеры по этому поводу).


person thehoten    schedule 23.10.2013    source источник
comment
7 – это DBT_DEVNODES_CHANGED, который задокументирован как: Нет дополнительной информации о том, какое устройство было добавлено или удалено из системы. Приложения, которым требуется дополнительная информация, должны зарегистрироваться для получения уведомлений с помощью RegisterDeviceNotification< /a> функция.   -  person GSerg    schedule 23.10.2013
comment
Спасибо за эту информацию. Вы знаете, где я могу получить информацию о функции RegisterDeviceNotification? Или пример использования?   -  person thehoten    schedule 23.10.2013
comment
Попробуйте перейти по ссылке чуть выше.   -  person GSerg    schedule 23.10.2013
comment
Я попытался использовать код по следующей ссылке stackoverflow.com/questions/8779475/, и это совсем не помогло.   -  person thehoten    schedule 23.10.2013