如果机器装了一块以上的网卡,在2000下通过调用GetAdaptersInfo()函数返回一个结构体,根据其中的AdapterName到注册表中保存网卡信息的键下,通过枚举子键就可得到网卡的型号,但是在98下通过调用此函数返回的AdapterName值为空,那应该怎么样得到网卡的型号呢?
哪位兄弟做过的请指教一下!
哪位兄弟做过的请指教一下!
解决方案 »
- VC2005下弹出文件对话框后,获取字符串资源出现乱码
- 键盘钩子再CHtmlView 中 一段时间后失效
- 关闭窗口时出现,Invalid Address specified to RtlFreeHeap
- 如何实现点击按钮,然后改变按钮背景色...
- 请推荐一个好用的图像库, 能够显示各种常用的图像文件格式
- 为什么我的DllMain函数在编译时会抱错!!…………在线等
- 简单的画图问题!!!!紧急求助!!!!!!!!!
- 怎么现实控件属性页?
- HWND 和CWnd*有什么区别
- 如何生成win32 unicode debug (release)?
- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~对面的高手瞧过来~~~~~~~~~~~~~~~~~~~~~~~
- 怎么让程序一开始运行就打开一个特定的文件?
typedef struct _ASTAT_
{
ADAPTER_STATUS adapt;
NAME_BUFFER NameBuff[30];
} ASTAT, * PASTAT; CString sNetBiosName=GetLocalIP();
strcpy(ip,sNetBiosName);
int maccounter=0;
CString strMacAddr;
ASTAT Adapter;
NCB ncb;
UCHAR uRetCode;
LANA_ENUM lana_enum;
memset(&ncb, 0, sizeof(ncb));
ncb.ncb_command=NCBENUM;//发送命令查询网卡数目
ncb.ncb_buffer=(unsigned char*)&lana_enum;
ncb.ncb_length=sizeof(lana_enum);
uRetCode=Netbios(&ncb);
if(uRetCode==0)
{
maccounter=lana_enum.length;
for(int maci=0;maci<maccounter;maci++)
{
ncb.ncb_command = NCBRESET;//重置网卡
ncb.ncb_lana_num = maci;//指定网卡编号
uRetCode = Netbios(&ncb);
memset(&ncb, 0, sizeof(ncb));
ncb.ncb_command = NCBASTAT;//获取网卡状态
ncb.ncb_lana_num = maci;
sNetBiosName.MakeUpper();
FillMemory(ncb.ncb_callname, NCBNAMSZ - 1, 0x20);
strcpy((char *)ncb.ncb_callname, (LPCTSTR) sNetBiosName);
ncb.ncb_callname[sNetBiosName.GetLength()] = 0x20;
ncb.ncb_callname[NCBNAMSZ] = 0x0;
ncb.ncb_buffer = (unsigned char *) &Adapter;
ncb.ncb_length = sizeof(Adapter);
uRetCode = Netbios(&ncb);
CString sMacAddress;
if (uRetCode == 0)
{
sMacAddress.Format(_T(" 网卡%d:%02x%02x%02x%02x%02x%02x"),
maci+1,
Adapter.adapt.adapter_address[0],
Adapter.adapt.adapter_address[1],
Adapter.adapt.adapter_address[2],
Adapter.adapt.adapter_address[3],
Adapter.adapt.adapter_address[4],
Adapter.adapt.adapter_address[5]);
}
strMacAddr+=sMacAddress;
strMacAddr+=" \r\n";
}
}
strcpy(mac,strMacAddr);
这两个地方也许对你有帮助
http://www.zdnet.com.cn/developer/code/story/0,2000081534,39046680,00.htm
http://www.copathway.com/vchelp/file2002_2/ViewAdapterInfo.zip
看过了没什么用,上面说的我都知道,而且在WIN2000下我所有的网卡信息都能得到,WIN98下也能得到IP、物理地址之类的,就差网卡型号名称了。
在2000系统中通过上面所说的GetAdaptersInfo()函数就可得到实际网卡的一个标志字符串,然后根据这个标志就可以到注册表中去查询。但在98系统下就不是这样。真是郁闷啊。
真的就没有哪位大哥知道吗?