使用组件检测ASP当前网卡地址的代码

明确选择

私人const NCBASTAT = H33
私人const ncbnamsz = 16
私人const heap_zero_memory = H8
私人const heap_generate_exceptions = H4
私人const ncbreset = h32

私人型NCB
ncb_command作为byte'integer
ncb_retcode作为byte'integer
作为byte'integer ncb_lsn
ncb_num字节的整数
ncb_buffer作为long'string
ncb_length为整数
ncb_callname字符串的长度为ncbnamsz
ncb_name字符串的长度为ncbnamsz
ncb_rto作为byte'integer
ncb_sto字节的整数
ncb_post长
ncb_lana_num作为byte'integer
ncb_cmd_cplt作为byte'integer
ncb_reserve(9)字节的保留,必须为0
ncb_event长
端式
私人型adapter_status
adapter_address(5)为byte'as长度为6的字符串
rev_major作为byte'integer
reserved0作为byte'integer
adapter_type作为byte'integer
rev_minor作为byte'integer
持续时间为整数
frmr_recv为整数
frmr_xmit为整数
iframe_recv_err为整数
xmit_aborts为整数
xmit_success长
recv_success长
iframe_xmit_err为整数
recv_buff_unavail为整数
t1_timeouts为整数
ti_timeouts为整数
保留1长
free_ncbs为整数
max_cfg_ncbs为整数
max_ncbs为整数
xmit_buf_unavail为整数
max_dgram_size为整数
pending_sess为整数
max_cfg_sess为整数
max_sess为整数
max_sess_pkt_size为整数
name_count为整数
端式
私人型name_buffer
名称的字符串ncbnamsz
name_num为整数
name_flags为整数
端式
私人型ASTAT
适应adapter_status
(30)为name_buffer namebuff
端式

私人声明函数NetBIOS库netapi32 .dll_
(中为NCB)字节
私人声明CopyMemory库功能的别名rtlmovememory (_
hpvdest任何,ByVal hpvSource为长,一个cbcopy长)
私人声明函数取得进程的默认堆对象库的功能()长
私人声明函数库HeapAlloc功能_
ByVal(hheap像Long ByVal dwFlags一样长,_
一个dwbytes只要长)
私人声明函数heapfree lib功能(ByVal hHeap为长,_
ByVal dwFlags为长lpmem一样长)

公共功能getmacaddress(SIP作为字符串)字符串
昏暗的srtn作为字符串
昏暗的myncb作为NCB
暗淡的bRet As Byte

将AIP()作为字符串
变长x
以字符串为默认值

如果InStr(SIP,,)= 0
getmacaddress =无效的IP地址。
退出功能
最后如果

拆分(SIP,)。
如果UBound(AIP)(然后)> 3
getmacaddress =无效的IP地址。
退出功能
最后如果

对于x = 0,UBound(AIP())
如果Len(AIP(x))>那么3
getmacaddress =无效IP地址
退出功能
最后如果

如果IsNumeric(AIP(x))= false
getmacaddress =无效IP地址
退出功能
最后如果

如果InStr(AIP(x),
getmacaddress =无效IP地址
退出功能
最后如果

如果CLng(AIP(x))> 255
getmacaddress =无效IP地址
退出功能
最后如果

如果然后
字符串(3 - Len(AIP(x)),0 )AIP(x)
其他的
字符串(3 - Len(AIP(x)),0 )AIP(x)
最后如果
下一个

srtn =
myncb.ncb_command = ncbreset
布雷特= NetBIOS(myncb)
myncb.ncb_command = NCBASTAT
myncb.ncb_lana_num = 0
myncb.ncb_callname =夹CHR(0)

昏暗的myastat为ASTAT,tempastat为ASTAT
昏暗的pastat长
myncb.ncb_length = Len(myastat)

pastat = HeapAlloc(GetProcessHeap(),heap_generate_exceptions或heap_zero_memory,myncb。ncb_length)
如果pastat = 0
getmacaddress =内存分配失败!
退出功能
最后如果

myncb.ncb_buffer = pastat
布雷特= NetBIOS(myncb)

如果布雷特<0,那么
getmacaddress =不能从当前的IP地址到MAC,IP地址:SIP
退出功能
最后如果

myastat CopyMemory,myncb.ncb_buffer,Len(myastat)

昏暗的茎为字符串
暗淡我一样长
对于我= 0比5
把=六(myastat.adapt.adapter_address(我))
如果我= 0然后
srtn = IIF(Len(茎)<2,0
其他的
srtn = srtn空间(1)IIF(Len(茎)<2,0 的茎,茎)
最后如果
下一个
HeapFree GetProcessHeap(),0,pastat
getmacaddress = srtn
端功能


使用方法uff1a

集s_mac = server.createobject(工程名称。类名
response.write s_mac.getmacaddress(request.servervariables(remote_host ))
集s_mac =没有