Je sais qu'il est tard pour vous maintenant, mais pas pour tout le monde ^^
J'ai eu le même besoin et c'est la ligne principale de la façon dont je l'ai fait:
-Vous avez besoin d'une fenêtre pour recevoir l'arrivée de l'appareil et le retrait (comme vous le dites)
-Alors vous créez un DeviceNotificationFilter initié à dbcc_devicetype = DBT_DEVTYP_DEVICEINTERFACE
-Alors dans la boucle de message de votre fenêtre, vous recherchez VM_DEVICECHANGE
-Quand vous le recevez si wParam == DBT_DEVICEARRIVAL, utilisez le lParam pour vérifier s'il s'agit d'un DBT_DEVTYPE_VOLUME (j'obtenais la lettre et le type du lecteur ici) ou un DBT_DEVTYPE_DEVICEINTERFACE (là vous pouvez utiliser votre lParam wellcasted récupère l'InstanceId de la structure d'entrée).
Lorsque vous connectez un lecteur, vous recevez d'abord DEVINTERFACE puis l'autre. Je donne seulement la ligne principale car je l'ai fait il y a longtemps et je n'ai pas le code ici, et aussi j'avais trouvé beaucoup de morceaux de code sur le net (il y a longtemps donc il devrait y avoir plus maintenant ^^^) msdn peut-être donner un exemple de code complet pour le faire maintenant.
Si vous lisez ceci et avez besoin de plus d'informations, je vais répondre ou faire une réponse complète documentée si beaucoup en ont besoin.
J'espère que cela aidera certains d'entre vous.