Chaque fois que l'utilisateur de brancher un périphérique USB de stockage de masse, comment obtenir le périphérique ID d'instance (ID unique) de ce dispositif particulier programme?instance périphérique de stockage USB ID (ID unique) programme
Répondre
Catch WM_DEVICECHANGE de toute poignée de fenêtre en vous inscrivant pour les notifications de changement d'appareil. En tant que tel:
DEV_BROADCAST_DEVICEINTERFACE dbd = { sizeof(dbd) };
dbd.dbcc_devicetype = DBT_DEVTYP_DEVICEINTERFACE;
dbd.dbcc_classguid = GUID_DEVINTERFACE_USB_DEVICE;
RegisterDeviceNotification(hwnd, &dbd, DEVICE_NOTIFY_WINDOW_HANDLE);
Le lParam du WM_DEVICECHANGE peut être jeté à DBT_DEVTYP_DEVICEINTERFACE. Remarque: lorsque vous branchez un périphérique, vous pouvez recevoir plusieurs notifications WM_DEVICECHANGE. Il suffit de filtrer sur l'événement d'arrivée et d'ignorer les doublons.
LRESULT WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
switch(hwnd)
{
case WM_DEVICE_CHANGE:
{
PDEV_BROADCAST_HDR pHdr = NULL;
PDEV_BROADCAST_DEVICEINTERFACE pDev = NULL;
pHdr = (PDEV_BROADCAST_HDR)lParam;
bool fDeviceArrival = (wParam == DBT_DEVICEARRIVAL);
if (fDeviceArrival)
{
if (pHdr && (pHdr->dbch_devicetype==DBT_DEVTYP_DEVICEINTERFACE))
{
pDev = (PDEV_BROADCAST_DEVICEINTERFACE)lParam;
}
if (pDev && (pDev->dbcc_classguid == GUID_DEVINTERFACE_USB_DEVICE))
{
// the PNP string of the device just plugged is in dbcc_name
OutputDebugString(pDev->dbcc_name);
OutputDebugString("\r\n");
}
}
....
Je pense que vous pouvez le faire en utilisant WMI. Regardez la classe Win32_LogicalDiskToPartition
pour obtenir une liste de tous les noms de disque, puis utiliser ces noms pour interroger la classe Win32_DiskDrive
et sa propriété PNPDeviceID
.
En fait, regardez here de meilleures instructions et une classe bien que le fait pour vous.
Mais je veux trouver l'identifiant d'instance de périphérique d'un nouveau branché device.At ce moment-là je ne sais pas la lettre de lecteur de cette device.And nouvellement branché si l'utilisateur est branché allready deux ou trois stylo lecteur à le système et maintenant il insère un autre périphérique. – Navaneeth
@Navaneeth: Regardez la classe 'ManagementEventWatcher' et l'événement 'DiskEventArrived'. Ce code devrait vous montrer la structure: http://www.eggheadcafe.com/software/aspnet/31850441/c-usb-pluginremoval-h.aspx –
- 1. ID unique SQL Buddy
- 2. Boucle avec ID unique?
- 3. ID unique d'une colonne
- 4. Google gadget ID unique
- 5. ID de périphérique Android (et non IMEI)
- 6. Périphérique de stockage USB SerialNumber du pilote minifiltre (du descripteur de périphérique USB)
- 7. Couches de stockage à instance unique
- 8. GWT uibinder défini ID unique
- 9. Délimiteur ID unique d'ASP.NET Control
- 10. Attribuer ID unique Jgrid Row
- 11. iPod/iPhone USB ID du produit
- 12. ID d'élément unique à référencer plus tard
- 13. Génération d'un ID unique de std :: string
- 14. ID unique personnalisé de cellule Uitableview
- 15. Obtenir article de la collection ID unique
- 16. MFC: ID bouton récupérer programme
- 17. ID de l'appareil brouillé Blackberry en 8 caractères unique
- 18. Conserver un ID unique sur plusieurs tables
- 19. ID unique et lisible pour chaque ordinateur
- 20. asp.net gridview tr id unique pour jQuery
- 21. ID unique en PHP contre $ _POST Form
- 22. ID unique pour MS Word 2007 paragraphe
- 23. ID unique dans plusieurs tables [MySQL]
- 24. API pour obtenir un ID unique iPhone?
- 25. Comment les ID de périphériques NVAPI se rapportent-ils aux ID de périphérique CUDA?
- 26. ID de processus de retour
- 27. Affecter un ID unique au sein de groupes d'enregistrements
- 28. Périphérique USB connecté
- 29. Catégorie Magento ID de produit ID
- 30. Création d'une zone de texte dans ASP.Net avec un ID unique par programme
'' lParam' de WM_DEVICECHANGE', peut ou ne peut pas être jeté à ' DBT_DEVTYP_DEVICEINTERFACE'. Cela dépend de 'wParam'. par exemple. il peut être lancé si wparam est 'DBT_DEVICEARRIVAL', ou' DBT_DEVICEREMOVECOMPLETE', mais pas quand il s'agit de 'DBT_DEVNODES_CHANGED'. Dans le cas de 'DBT_DEVNODES_CHANGED',' 'lParam' est toujours' zéro'. –