使用VB截获WIN98系列下的IP数据包

来源:计算机等级考试    发布时间:2012-08-29    计算机等级考试视频    评论


  End If
  If (0 = GetOverlappedResult(hVxD, ovlp, cbRet, 0)) Then
  If (GetLastError() = ERROR_IO_INCOMPLETE) Then
  MsgBox "ok2"
  Else
  Call CloseHandle(hEvent)
  Exit Function
  End If
  End If
  result = GetOverlappedResult(hVxD, ovlp, cbRet, 1)
  End If
  QueryPacket = cbRet
  End Function
  Function QueryOid(hVxD As Long, ulOid As Long, ulLength As Long) As Long
  Dim cbIn As Long
  cbIn = 14 + ulLength
  Dim cbRet As Long
  Dim OidData As PACKET_OID_DATA
  OidData.Oid = ulOid
  OidData.Length = ulLength
  OidData.data = 0
  Dim ioctl As Long
  Const OID_802_3_PERMANENT_ADDRESS = &H1010101
  Const IOCTL_PROTOCOL_QUERY_OID = &H80000000
  Const IOCTL_PROTOCOL_STATISTICS = &H80000008
  If ulOid >= OID_802_3_PERMANENT_ADDRESS Then
  ioctl = IOCTL_PROTOCOL_QUERY_OID
  Else
  ioctl = IOCTL_PROTOCOL_STATISTICS
  End If
  Call CopyMemory(InBuff(0), OidData, cbIn)
  cbRet = QueryPacket(hVxD, ioctl, cbIn, cbIn)
  QueryOid = cbRet
  End Function
  Function GetHardEtherAddr(ByVal hVxD As Long, petheraddr As EtherAddr) As Boolean
  Dim nret As Long
  Const OID_802_3_CURRENT_ADDRESS = &H1010102
  nret = QueryOid(hVxD, OID_802_3_CURRENT_ADDRESS, 6)
  If (nret > 0) Then
  Call CopyMemory(petheraddr, InBuff(8), 6)
  GetHardEtherAddr = True
  Else
  GetHardEtherAddr = False
  End If
  End Function
  Function SetOid(ByVal hVxD As Long, ByVal ulOid As Long, ByVal ulLength As Long, ByVal data As Long) As Long
  Dim cbIn As Long
  Dim cbRet As Long
  Dim OidData As PACKET_OID_DATA
  Dim ioctl As Long
  cbIn = 32
  If (ulOid = OID_GEN_CURRENT_PACKET_FILTER) Then ioctl = IOCTL_PROTOCOL_SET_OID
  OidData.Oid = ulOid
  OidData.Length = ulLength
  OidData.data = 1

视频学习

我考网版权与免责声明

① 凡本网注明稿件来源为"原创"的所有文字、图片和音视频稿件,版权均属本网所有。任何媒体、网站或个人转载、链接转贴或以其他方式复制发表时必须注明"稿件来源:我考网",违者本网将依法追究责任;

② 本网部分稿件来源于网络,任何单位或个人认为我考网发布的内容可能涉嫌侵犯其合法权益,应该及时向我考网书面反馈,并提供身份证明、权属证明及详细侵权情况证明,我考网在收到上述法律文件后,将会尽快移除被控侵权内容。

最近更新

社区交流

考试问答