Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Identification d'un port série USB

1 view
Skip to first unread message

johann.d

unread,
Apr 17, 2008, 1:00:37 PM4/17/08
to
Bonjour, je voudrais savoir quelle est la méthode la plus simple et la plus
portable (2000 - XP - Vista) pour
1) énumérer les ports séries disponibles
2) savoir lesquels sont des ports série virtuel USB
3) pour chaque port série virtuel USB, retrouver le nom du driver et surtout
l'identifiant du périphérique (VendorID et ProductID)

Accessoirement, une application peut-elle être notifiée explicitement lors
de l'insertion ou du retrait d'un périphérique USB de ce type ?

Merci de vos pistes,

--
johann.d


Christian ASTOR

unread,
Apr 17, 2008, 4:33:50 PM4/17/08
to
johann.d wrote:
> Bonjour, je voudrais savoir quelle est la méthode la plus simple et la plus
> portable (2000 - XP - Vista) pour
> 1) énumérer les ports séries disponibles
> 2) savoir lesquels sont des ports série virtuel USB
> 3) pour chaque port série virtuel USB, retrouver le nom du driver et surtout
> l'identifiant du périphérique (VendorID et ProductID)

cf sources USBView, MS DDK (SetupDi* & Cie)

> Accessoirement, une application peut-elle être notifiée explicitement lors
> de l'insertion ou du retrait d'un périphérique USB de ce type ?

RegisterDeviceNotification()

johann.d

unread,
Apr 23, 2008, 2:59:30 PM4/23/08
to

"Christian ASTOR" <cast...@club-internet.fr> a écrit dans le message de
news: 4807b20a$0$21143$7a62...@news.club-internet.fr...

> johann.d wrote:
>> Bonjour, je voudrais savoir quelle est la méthode la plus simple et la
>> plus portable (2000 - XP - Vista) pour
>> 1) énumérer les ports séries disponibles
>> 2) savoir lesquels sont des ports série virtuel USB
>> 3) pour chaque port série virtuel USB, retrouver le nom du driver et
>> surtout l'identifiant du périphérique (VendorID et ProductID)
>
> cf sources USBView, MS DDK (SetupDi* & Cie)

Bonjour et merci de cette première réponse qui m'a déjà bien avancé. Je
parviens à récupérer la liste des périphériques puis avec
SetupDiGetDeviceRegistryProperty je peux identifier ceux qui m'intéressent.
Il reste pourtant une information que je n'ai pas trouvé, c'est le numéro du
port série virtuel. J'ai bien un SPDRP_FRIENDLYNAME qui me renvoie une
chaîne du type "Port série USB (COM9)", comment puis-je remonter directement
au "COM9" sans avoir à disséquer le friendly name ?


Merci,

--
johann.d


Christian ASTOR

unread,
Apr 23, 2008, 6:58:49 PM4/23/08
to
johann.d wrote:
> "Christian ASTOR" <cast...@club-internet.fr> a écrit dans le message de
>>cf sources USBView, MS DDK (SetupDi* & Cie)
>
>
> Bonjour et merci de cette première réponse qui m'a déjà bien avancé. Je
> parviens à récupérer la liste des périphériques puis avec
> SetupDiGetDeviceRegistryProperty je peux identifier ceux qui m'intéressent.
> Il reste pourtant une information que je n'ai pas trouvé, c'est le numéro du
> port série virtuel. J'ai bien un SPDRP_FRIENDLYNAME qui me renvoie une
> chaîne du type "Port série USB (COM9)", comment puis-je remonter directement
> au "COM9" sans avoir à disséquer le friendly name ?

Avec SetupDiOpenDevRegKey() & "PortName" =>

// while( SetupDiEnumDeviceInfo ... etc
//
HKEY hKey = SetupDiOpenDevRegKey (hDeviceInfo, &DeviceInfoData,
DICS_FLAG_GLOBAL, 0, DIREG_DEV, KEY_READ);
if (hKey)
{
char sPortName[MAX_PATH];
DWORD dwType = REG_SZ;
DWORD dwSize = sizeof(sPortName);
long nRet = RegQueryValueEx(hKey, "PortName", 0, &dwType,
(LPBYTE)sPortName, &dwSize);
...

johann.d

unread,
Apr 24, 2008, 3:41:45 PM4/24/08
to

"Christian ASTOR" <cast...@club-internet.fr> a écrit dans le message de
news: 480fbd03$0$21142$7a62...@news.club-internet.fr...

> Avec SetupDiOpenDevRegKey() & "PortName" =>
>
> // while( SetupDiEnumDeviceInfo ... etc
> //
> HKEY hKey = SetupDiOpenDevRegKey (hDeviceInfo, &DeviceInfoData,
> DICS_FLAG_GLOBAL, 0, DIREG_DEV, KEY_READ);
> if (hKey)
> {
> char sPortName[MAX_PATH];
> DWORD dwType = REG_SZ;
> DWORD dwSize = sizeof(sPortName);
> long nRet = RegQueryValueEx(hKey, "PortName", 0, &dwType,
> (LPBYTE)sPortName, &dwSize);
> ...

Merci, c'est parfait !

--
johann.d


0 new messages