网卡的序列号

调用EthernetAddress(0),该函数返回的字符串就是您机器上网卡的以太序列号。

Private Const NCBASTAT = &H33
Private Const NCBNAMSZ = 16
Private Const HEAP_ZERO_MEMORY = &H8
Private Const HEAP_GENERATE_EXCEPTIONS = &H4
Private Const NCBRESET = &H32

Private Type NCB
 ncb_command As Byte
 ncb_retcode As Byte
 ncb_lsn As Byte
 ncb_num As Byte
 ncb_buffer As Long
 ncb_length As Integer
 ncb_callname As String * NCBNAMSZ
 ncb_name As String * NCBNAMSZ
 ncb_rto As Byte
 ncb_sto As Byte
 ncb_post As Long
 ncb_lana_num As Byte
 ncb_cmd_cplt As Byte
 ncb_reserve(9) As Byte ' Reserved, must be 0
 ncb_event As Long
End Type

Private Type ADAPTER_STATUS
 adapter_address(5) As Byte
 rev_major As Byte
 reserved0 As Byte
 adapter_type As Byte
 rev_minor As Byte
 duration As Integer
 frmr_recv As Integer
 frmr_xmit As Integer
 iframe_recv_err As Integer
 xmit_aborts As Integer
 xmit_success As Long
 recv_success As Long
 iframe_xmit_err As Integer
 recv_buff_unavail As Integer
 t1_timeouts As Integer
 ti_timeouts As Integer
 Reserved1 As Long
 free_ncbs As Integer
 max_cfg_ncbs As Integer
 max_ncbs As Integer
 xmit_buf_unavail As Integer
 max_dgram_size As Integer
 pending_sess As Integer
 max_cfg_sess As Integer
 max_sess As Integer
 max_sess_pkt_size As Integer
 name_count As Integer
End Type

Private Type NAME_BUFFER
 name As String * NCBNAMSZ
 name_num As Integer
 name_flags As Integer
End Type

Private Type ASTAT
 adapt As ADAPTER_STATUS
 NameBuff(30) As NAME_BUFFER
End Type

Private Declare Function Netbios Lib "netapi32.dll" _
(pncb As NCB) As Byte

Private Declare Sub CopyMemory Lib "kernel32" Alias _
"RtlMoveMemory" (hpvDest As Any, ByVal hpvSource As Long, _
ByVal cbCopy As Long)

Private Declare Function GetProcessHeap Lib "kernel32" () _
As Long

Private Declare Function HeapAlloc Lib "kernel32" _
(ByVal hHeap As Long, ByVal dwFlags As Long, _
ByVal dwBytes As Long) As Long

Private Declare Function HeapFree Lib "kernel32" _
(ByVal hHeap As Long, ByVal dwFlags As Long, lpMem As Any) _
As Long

Private Function EthernetAddress(LanaNumber As Long) _
As String

 Dim udtNCB    As NCB
 Dim bytResponse As Byte
 Dim udtASTAT   As ASTAT
 Dim udtTempASTAT As ASTAT
 Dim lngASTAT   As Long
 Dim strOut    As String
 Dim x      As Integer

 udtNCB.ncb_command = NCBRESET
 bytResponse = Netbios(udtNCB)
 udtNCB.ncb_command = NCBASTAT
 udtNCB.ncb_lana_num = LanaNumber
 udtNCB.ncb_callname = "* "
 udtNCB.ncb_length = Len(udtASTAT)
 lngASTAT = HeapAlloc(GetProcessHeap(), _
HEAP_GENERATE_EXCEPTIONS Or HEAP_ZERO_MEMORY, udtNCB.ncb_length)

 strOut = ""
 If lngASTAT Then
  udtNCB.ncb_buffer = lngASTAT
  bytResponse = Netbios(udtNCB)
  CopyMemory udtASTAT, udtNCB.ncb_buffer, Len(udtASTAT)
   With udtASTAT.adapt
   For x = 0 To 5
    strOut = strOut & Right$("00" & Hex$(.adapter_address(x)), 2)
   Next x
  End With
  HeapFree GetProcessHeap(), 0, lngASTAT
 End If
 EthernetAddress = strOut
End Function 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值