- Код: Выделить всё
Private Declare Function inet_addr Lib "wsock32.dll" (ByVal cp As String) As Long
Private Declare Function SendARP Lib "IPHLPAPI.dll" (ByRef DestIP As Long, ByRef SrcIP As Long, ByRef pMacAddr() As Long, ByRef PhyAddrLen As Long) As Long
Const MAX_ADAPTER_ADDRESS_LENGTH = 6
Private Sub Form_Load()
Dim mac(2) As Long
Dim paLen As Long
paLen = 6
MsgBox SendARP(inet_addr("10.11.7.254"), inet_addr("0.0.0.0"), mac(), paLen)
'MsgBox get_mac(mac, paLen)
End
End Sub
В результате возвращает "31". Мак в mac не записывает. Искал в мсдн, ничего полезного не нашел. Как я понимаю 31 означает переполнение буфера. В мсдн пишут:
pMacAddr
[out] A pointer to an array of ULONG variables. This array must have at least two ULONG elements to hold an Ethernet or token ring physical address. The first six bytes of this array receive the physical address that corresponds to the IPv4 address specified by the DestIP parameter.
Поэтому задал переменную mac как массив. Но это не помогает. Что делать не знаю Нигде не могу найти гайда по этой функции. В API-Guide тоже нету