Récupère la lettre de lecteur du descripteur de périphérique en C #

Je travaille dans un petit outil pour enregistrer l’activité dans les périphériques USB. Mon outil fonctionne comme un service Windows attrapant tous les événements du périphérique, essentiellement je commence à surveiller le périphérique USB dès que DBT_DEVICEARRIVAL un événement DBT_DEVICEARRIVAL . Après cela, je dois arrêter le moniteur dès que j’obtiens le DBT_DEVICEQUERYREMOVE (sinon, mon service refusera l’éjection du périphérique en toute sécurité). Le problème est que l’outil doit être capable de surveiller plusieurs appareils, donc je dois être en mesure de déterminer quel appareil l’utilisateur tente d’éjecter. J’ai découvert que l’événement DBT_DEVICEQUERYREMOVE porte une structure DEV_BROADCAST_HANDLE . J’essaie d’extraire des informations utiles de cette structure qui peuvent me permettre d’identifier quel périphérique est éjecté. J’ai découvert qu’il y avait un handle vers le périphérique, j’ai essayé d’extraire la lettre du lecteur en utilisant la fonction système GetFinalPathNameByHandle mais ne fonctionne pas correctement (retourne une valeur vide). Toute idée de comment puis-je faire cela?

Merci beaucoup!

Puisque la réponse semble être un peu moins évidente que je ne le pensais: appelez RegisterDeviceNotification pour chaque périphérique qui vous intéresse, en identifiant le périphérique par son handle. Puisque vous créez l’enregistrement, vous saurez quelles lettres de lecteur mappent à quel descripteur de notification.