Je suis en train de développer une application C# qui peut communiquer avec un USB HID. J'overriden ma méthode WndProc de sorte que soit prises tous les événements de WM_DEVICECHANGE et passe la méthode DeviceChange à une OnDeviceChange méthode (ce code est en fait emprunté à Jan Axelson) qui ressemble à ceci ....DeviceAttached un message ne vient jamais
protected override void WndProc(ref Message m)
{
try
{
// The OnDeviceChange routine processes WM_DEVICECHANGE messages.
if (m.Msg == DeviceManagement.WM_DEVICECHANGE)
{
OnDeviceChange(m);
}
// Let the base form process the message.
base.WndProc(ref m);
}
catch (Exception ex)
{
DisplayException(this.Name, ex);
throw ;
}
}
Pour une raison cependant, chaque fois que je branche un périphérique, que ce soit une souris ou un clavier ou le périphérique que je développe, qui sont tous HID, la valeur de WParam est toujours 0x7;
Je suis arrivé DBT.h et la valeur de 0x0007 est ...
#define DBT_DEVNODES_CHANGED 0x0007
/*
* Message = WM_DEVICECHANGE
* wParam = DBT_QUERYCHANGECONFIG
* lParam = 0
*
* sent to ask if a config change is allowed
*/....
Je n'arrête pas juste après le premier message arrive soit je regarde tous les messages et pour chacun la valeur est toujours 0x0007. Pourquoi ne vois-je jamais les événements DeviceAttached ou DeviceRemoved?
Toute personne ayant une certaine expérience USB a des idées?