各位大哥大姐好,小弟现有一时不明,亟待请教,望能不吝赐教。我想写一个与网卡通信的程序,主要是检测到是否装了网卡,查找网卡的基地址,向网卡发一些命令。网卡当然WinXP带有驱动的,我不知道如何在VC里实现如此这般的功能,好像不用DDK,如有哪位大侠能指点一二,小弟真是感激涕零,谢谢了

解决方案 »

  1.   

    98的系统下,在注册表"HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Class\Net\0001分支下字符串值"NetworkAddress",其属设为想要的网卡MAC地址,如:112233445566;
    而在xp下,则在注册表有几处(我的机器上是三个地方):
    1 "HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Class\{4D36E972-E325-11CE-BFC1-08002bE10318}\0001"分支下字符串值"NetworkAddress";
    2 "HKEY_LOCAL_MACHINE\SYSTEM\ControlSet002\Control\Class\{4D36E972-E325-11CE-BFC1-08002bE10318}\0001"分支下字符串值"NetworkAddress";
    3 "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4D36E972-E325-11CE-BFC1-08002bE10318}\0001"分支下字符串值"NetworkAddress";
    你可以访问注册表中这几个地方,如果没有网卡则无该值。当然现在只要不太老的机器上一般都有网卡,另外,没物理网卡但装了VMWare之类的软件也会有“网卡”。
      

  2.   

    先谢谢各位了。好像不用写驱动,也不是要得到网卡的MAC地址,而是要得到网卡在系统PCI总线当中的基地址。好像CreateFile()之类的。但我不知道要打开网卡的话,CreateFile()应该怎样填。
      

  3.   

    不好意思,我也想在此打听一下,用什么语句,可以得到PCI的基址啊
      

  4.   

    谢谢各位的指教。呵呵,好像不用setupapi,驱动是微软WinXP自带的,直接调驱动就好了,我的思路是:CreateFile打开设备,再用DeviceIoControl传数据或者发命令,欢迎拍砖:)
      

  5.   

    怎么不说用个miniport nids呢,
      

  6.   

    miniport nids……没听过……沉思ing……
      

  7.   

    网卡的drv是miniport层,当然ndis是中间的操作hd当然方便了
      

  8.   

    我以前做过绝对可靠的方法,就是通过PCI配置空间寄存器枚举PCI设备的PCIHeader,通过PCI 2.1标准协议可以得到PCI设备类型,I/O端口地址,中断引脚,中断号码,内存地址隐射的基地址,等等
      

  9.   

    都惊动斑竹了:)谢谢各位的指导。我想问一下,“通过PCI配置空间寄存器枚举PCI设备的PCIHeader,通过PCI 2.1标准协议可以得到PCI设备类型,I/O端口地址,中断引脚,中断号码,内存地址隐射的基地址”这些在Windows中能用SDK的API实现吗?动用DDK的话好像有点杀鸡用牛刀了,而且我也不会……我现在已经找到8139在握系统中的符号连接,并用CreateFile打开了设备,现在卡在了用DeviceIoControl给网卡发命令这里,主要是不知道微软写的8139驱动都支持哪些ControlCode,其他参数如何配置。有没有那位用过或知道怎么查的,请指点一下,谢谢啦:)
      

  10.   

    就是用setupapi,要不然知道要怎么样CreateFile,CreateFile的设备名就是用setupapi得到的,
      

  11.   


    求购视频会议源代码!
    用提供者请电:
    [email protected]