Page 1 sur 1

Identifiant unique USB et référence au lecteur?

Publié : mar. 16/nov./2010 12:29
par GallyHC
Bonjour tout le monde,

Je recherche encore à faire un code pour trouver le l'identifiant unique des lecteurs USB (la c'est bon). Par contre il faudrait que je trouve une solution pour connaitre la lettre ou il est associer.
Genre Mxxxxxxxxxxxxxx&0 > a : ect…

Le code pour avoir l'identifiant unique:

Code : Tout sélectionner

; ****************************************************************************
; ****************************************************************************
; ****************************************************************************
; ****************************************************************************

; +--------------------------------------------------------------------------+
; |                                                                          |
; +--------------------------------------------------------------------------+

EnableExplicit

; ****************************************************************************
; ****************************************************************************
; ****************************************************************************
; ****************************************************************************

; +--------------------------------------------------------------------------+
; |                                                                          |
; +--------------------------------------------------------------------------+

Procedure.s setCutLigne(value.s)
; ROUTINE DE DECOUPAGE DES REPERTOIRES.
  Define i.l

  For i=Len(value)-1 To 0 Step -1
    If Mid(value, i, 1) = "\"
      Break
    EndIf
  Next i
  If i>0
    ProcedureReturn Mid(value, i+1, Len(value)-(i))
  Else
    ProcedureReturn value
  EndIf

EndProcedure

; ****************************************************************************
; ****************************************************************************
; ****************************************************************************
; ****************************************************************************

; +--------------------------------------------------------------------------+
; |                                                                          |
; +--------------------------------------------------------------------------+

Structure SP_DEVINFO_DATA
  cbSize.l
  ClassGuid.GUID
  DevInst.l
  Reserved.l
EndStructure
Define value.l
Define idlib.l
Define devic.l
Define devid.l
Define usbid.s
Define alias.s
Define hDeviceInfoSet.l
Define DeviceInfoData.SP_DEVINFO_DATA

hDeviceInfoSet        = SetupDiGetClassDevs_(0, 0, 0, #DIGCF_PRESENT|#DIGCF_ALLCLASSES)
DeviceInfoData\cbSize = SizeOf(DeviceInfoData)
idlib = OpenLibrary(#PB_Any, "cfgmgr32.dll")
devic = GetFunction(idlib,   "CM_Get_Device_IDA")

While SetupDiEnumDeviceInfo_(hDeviceInfoSet, value, @DeviceInfoData)
  usbid = Space(255)
  CallFunctionFast(devic, DeviceInfoData\DevInst, @usbid, Len(usbid), 0)  
  If Left(usbid, 7) = "USBSTOR"
    Debug setCutLigne(usbid)
  EndIf
  value+1
Wend
CloseLibrary(idlib)
SetupDiDestroyDeviceInfoList_(hDeviceInfoSet)
La, je sèche complètement…

Merci d'avance
GallyHC

Re: Identifiant unique USB et référence au lecteur?

Publié : mar. 16/nov./2010 13:16
par Patrick88
vu sur le forum anglais :

USB HID Library

This library allows to gain access to USB HID device, from programs, written in PureBasic.

Cette bibliothèque permet d'accéder à l'USB HID, depuis des programmes écrits en PureBasic.

http://www.purebasic.fr/english/viewtop ... 14&t=41729

Re: Identifiant unique USB et référence au lecteur?

Publié : mar. 16/nov./2010 18:42
par GallyHC
Merci Patrick88, le problème est que la plus par des fonctions de cette Dll je l'obtien sans problème via l'api "SetupDiGetDeviceRegistryProperty", mais pas la lettre, ni le nom du Device.

Cordialement,
GallyHC

Re: Identifiant unique USB et référence au lecteur?

Publié : mar. 16/nov./2010 19:38
par falsam
Au cas ou ça t'aiderait

Code : Tout sélectionner

Procedure DetectUSBKey() 
  For n=0 To 26 
    If RealDriveType_(n,0)=  #DRIVE_REMOVABLE
      Debug Chr(n+65)+": Drive is a Removable Drive" 
    EndIf 
  Next 
EndProcedure 

Re: Identifiant unique USB et référence au lecteur?

Publié : mar. 16/nov./2010 19:46
par falsam
A prioiris DEV_BROADCAST_VOLUME est déjà déclaré en tant que structure dans le compilateur mais je n'ai pas réussi à le mettre en oeuvre

Cette structure donne accès à

dbcv_devicetype (surement ce que tu cherches)
dbcv_flags
dbcv_reserved
dbcv_size
dbcv_unitmask (surement ce que tu cherches)
PB_Alignment