1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54
| Public Shared Function BTRechercheDevices(ByRef tabNom As String(), ByRef tabAddr As String(), ByVal nbDeviceMax As Integer) As Integer
Dim i As Integer
Dim resDll As Integer
Dim byteTabNom() As Byte
Dim byteTabAddr() As Byte
Dim PtrTabNom As IntPtr 'On crée le IntPtr qui contiendra l'adresse du buffer
Dim PtrTabAddr As IntPtr 'On crée le IntPtr qui contiendra l'adresse du buffer
Dim longTabNom As Integer = 30
Dim longTabAddr As Integer = 5
Dim tabTmpNom() As Byte
Dim tabTmpAddr() As Byte
ReDim byteTabNom((longTabNom * nbDeviceMax) - 1)
ReDim byteTabAddr((longTabAddr * nbDeviceMax) - 1)
ReDim tabTmpNom(longTabNom - 1)
ReDim tabTmpAddr(longTabAddr - 1)
PtrTabNom = Marshal.AllocHGlobal(longTabNom * nbDeviceMax)
PtrTabAddr = Marshal.AllocHGlobal(longTabAddr * nbDeviceMax)
Marshal.Copy(byteTabNom, 0, PtrTabNom, longTabNom * nbDeviceMax)
Marshal.Copy(byteTabAddr, 0, PtrTabAddr, longTabAddr * nbDeviceMax)
' Recherche BT
resDll = _BTRechercheDevices(PtrTabNom, longTabNom, PtrTabAddr, longTabAddr, nbDeviceMax, &HFF)
Marshal.Copy(PtrTabNom, byteTabNom, 0, longTabNom * nbDeviceMax)
Marshal.Copy(PtrTabAddr, byteTabAddr, 0, longTabAddr * nbDeviceMax)
Marshal.FreeHGlobal(PtrTabNom)
Marshal.FreeHGlobal(PtrTabAddr)
' Erreur ou pas de résultat -> on quitte
If (resDll < 0) OrElse (resDll = 0) Then Return resDll
ReDim tabNom(resDll - 1)
ReDim tabAddr(resDll - 1)
For i = 0 To resDll - 1
Array.Copy(byteTabNom, i * longTabNom, tabTmpNom, 0, longTabNom)
tabNom(i) = TabByte2String(tabTmpNom)
Array.Copy(byteTabAddr, i * longTabAddr, tabTmpAddr, 0, longTabAddr)
tabAddr(i) = AdresseMAC2HexString(tabTmpAddr)
Next
Return resDll
End Function |
Partager