SendArp

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
v@Mp!rO
Новичок
Новичок
 
Сообщения: 47
Зарегистрирован: 17.01.2004 (Сб) 17:45

SendArp

Сообщение v@Mp!rO » 24.06.2007 (Вс) 23:32

Доброго времени суток. Помогите пожалуйста. Как пользоваться функцией апи SendArp. Вот мой код.

Код: Выделить всё
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 тоже нету :(

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 24.06.2007 (Вс) 23:54

Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

v@Mp!rO
Новичок
Новичок
 
Сообщения: 47
Зарегистрирован: 17.01.2004 (Сб) 17:45

Сообщение v@Mp!rO » 25.06.2007 (Пн) 16:20

2GSerg
Спасибо конечно. Но конкретно вопрос: "Как пользоваться SendArp?" или хотя бы где об этом почитать...

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 25.06.2007 (Пн) 22:49

В приведённой формулировке вопрос "Как пользоваться функцией SendArp" сводится к вопросу "Как передать в dll указатель на массив", а последний вопрос освещается по ссылке.
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: SemrushBot и гости: 69

    TopList