当前位置导航:炫浪网>>网络学院>>编程开发>>C++教程>>C++基础入门教程

取得系统中网卡MAC地址的三种方法

     做好的程序员一如做人。多看多想或许他山之石可以攻玉,但永远不要成为代码的奴隶。 CKER
    原著:Borland
    Translated by CKER

    第一种方法使用Microsoft的Netbios API。 这是一套通过Winsock提供底层网络支持的命令。使用Netbios的最大缺点是您必须在系统中安装了Netbios服务(如果您在windows网络中启用了文件共享的话,这就不是问题了)。除此此外,这种方法又快又准确。

    Netbios API只包括了一个函数,就叫做Netbios。这个函数使用网络控制块(network control block)结构作为参数,这个结构告诉函数要做什么。结构的定义如下:
      typedef strUCt _NCB {
        UCHAR  ncb_command;
        UCHAR  ncb_retcode;
        UCHAR  ncb_lsn;
        UCHAR  ncb_num;
        PUCHAR ncb_buffer;
        Word   ncb_length;
        UCHAR  ncb_callname[NCBNAMSZ];
        UCHAR  ncb_name[NCBNAMSZ];
        UCHAR  ncb_rto;
        UCHAR  ncb_sto;
        void (CALLBACK *ncb_post) (struct _NCB *);
        UCHAR  ncb_lana_num;
        UCHAR  ncb_cmd_cplt;
    #ifdef _WIN64
        UCHAR  ncb_reserve[18];
    #else
        UCHAR  ncb_reserve[10];
    #endif
        HANDLE ncb_event;
    } NCB, *PNCB;

 

    重点在于ncb_command 成员。这个成员告诉Netbios该作什么。我们使用三个命令来探测MAC地址。他们在MSDN的定义如下:
    命令描述:
    NCBENUM Windows NT/2000: 列举系统中网卡的数量。使用此命令后,ncb_buffer成员指向由LANA_ENUM结构填充的缓冲区。
    NCBENUM 不是标准的 NetBIOS 3.0 命令。

    NCBRESET 重置网卡。网卡在接受新的NCB命令之前必须重置。

共3页 首页 上一页 1 2 3 下一页 尾页 跳转到
相关内容
赞助商链接