• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            S.l.e!ep.¢%

            像打了激速一樣,以四倍的速度運(yùn)轉(zhuǎn),開心的工作
            簡(jiǎn)單、開放、平等的公司文化;尊重個(gè)性、自由與個(gè)人價(jià)值;
            posts - 1098, comments - 335, trackbacks - 0, articles - 1
              C++博客 :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

            若系統(tǒng)中安裝了 VMWare 或者某些 VPN 客戶端軟件,則會(huì)出現(xiàn)若干虛擬網(wǎng)卡。它們?cè)谛问缴吓c物理網(wǎng)卡幾乎沒有區(qū)別。 ipconfig 將它們與本地物理網(wǎng)卡等同對(duì)待。 那如何在如何區(qū)分虛擬網(wǎng)卡還是物理網(wǎng)卡呢?

            有些人建議使用 MAC 地址中的 "locally administread bit" 來區(qū)分。但是事實(shí)上不能100%區(qū)分,在win2000之后的系統(tǒng)基本是行不通的。
            http://hi.baidu.com/xzq2000/blog/item/43b686d672cd762f07088b95.html

            有人用GetAdaptersInfo 可以獲得本機(jī)所有網(wǎng)卡的信息,然后通過判斷是否“pci”開頭來區(qū)分是否虛擬網(wǎng)卡。http://blog.csdn.net/aseity/archive/2007/12/11/1929948.aspx 具體代碼如下:(以下代碼引用別處)

            bool IsLocalAdapter ( const char *pAdapterName ) const
            ...{
            ?BOOL ret_value = FALSE;

            #define NET_CARD_KEY "System\CurrentControlSet\Control\Network\{4D36E972-E325-11CE-BFC1-08002BE10318}"
            ?char szDataBuf[MAX_PATH+1];
            ?DWORD dwDataLen = MAX_PATH;
            ?DWORD dwType = REG_SZ;
            ?HKEY hNetKey = NULL;
            ?HKEY hLocalNet = NULL;

            ?if(ERROR_SUCCESS != RegOpenKeyEx(HKEY_LOCAL_MACHINE, NET_CARD_KEY, 0, KEY_READ, &hNetKey))
            ?return FALSE;
            ?sprintf(szDataBuf, "%s\Connection", pAdapterName);
            ?if(ERROR_SUCCESS != RegOpenKeyEx(hNetKey ,szDataBuf ,0 ,KEY_READ, &hLocalNet))
            ?...{
            ?RegCloseKey(hNetKey);
            ?return FALSE;
            ?}
            ?if (ERROR_SUCCESS != RegQueryValueEx(hLocalNet, "MediaSubType", 0, &dwType, (BYTE *)szDataBuf, &dwDataLen))
            ?...{
            ?goto ret;
            ?}
            ?if (*((DWORD *)szDataBuf)!=0x01)
            ?goto ret;
            ?dwDataLen = MAX_PATH;
            ?if (ERROR_SUCCESS != RegQueryValueEx(hLocalNet, "PnpInstanceID", 0, &dwType, (BYTE *)szDataBuf, &dwDataLen))
            ?...{
            ?goto ret;
            ?}
            ?if (strncmp(szDataBuf, "PCI", strlen("PCI")))
            ?goto ret;

            ?ret_value = TRUE;

            ret:
            ?RegCloseKey(hLocalNet);
            ?RegCloseKey(hNetKey);

            ?return ret_value!=0;

            }


            這樣方法基本可以達(dá)到目標(biāo),但是也存在不能識(shí)別所有網(wǎng)卡類型。
            還有一種更簡(jiǎn)單,而且可以100%識(shí)別的方法,就是通過“Characteristics”這個(gè)值來確定網(wǎng)卡的類型是虛擬網(wǎng)卡還是物理網(wǎng)卡。

            Characteristics 值在注冊(cè)表
            HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4D36E972-E325-11CE-BFC1-08002bE10318}\數(shù)字下。

            在windows中,Characteristics 的取值如下,Characteristics項(xiàng)可以有1個(gè)或多個(gè)如下的值(多值應(yīng)計(jì)算總和):

            十六進(jìn)制值 名字 描述

            ox1 NCF_VIRTUAL 說明組件是個(gè)虛擬適配器
            ox2 NCF_SOFTWARE_ENUMERATED 說明組件是一個(gè)軟件模擬的適配器
            ox4 NCF_PHYSICAL 說明組件是一個(gè)物理適配器
            ox8 NCF_HIDDEN 說明組件不顯示用戶接口
            ox10 NCF_NO_SERVICE 說明組件沒有相關(guān)的服務(wù)(設(shè)
            備驅(qū)動(dòng)程序)
            ox20 NCF_NOT_USER_REMOVABLE 說明不能被用戶刪除(例如,
            通過控制面板或設(shè)備管理器)
            ox40 NCF_MULTIPORT_INSTANCED_ADAPTER 說明組件有多個(gè)端口,每個(gè)端
            口作為單獨(dú)的設(shè)備安裝。每個(gè)
            端口有自己的hw_id(組件ID)
            并可被單獨(dú)安裝,這只適合于
            EISA適配器
            ox80 NCF_HAS_UI 說明組件支持用戶接口(例如,
            Advanced Page或Customer
            Properties Sheet)
            ox400 NCF_FILTER 說明組件是一個(gè)過濾器

            從上面可以看出來,只要用戶判斷“Characteristics ”的值就可以判斷網(wǎng)卡是虛擬網(wǎng)卡還是物理網(wǎng)卡。

            如果是虛擬網(wǎng)卡:Characteristics & NCF_VIRTUAL ==NCF_VIRTUAL

            如果是物理網(wǎng)卡:Characteristics & NCF_PHYSICAL ==NCF_PHYSICAL

            本文來自CSDN博客,轉(zhuǎn)載請(qǐng)標(biāo)明出處:http://blog.csdn.net/jianghui3132749/archive/2009/11/25/4868350.aspx

            Feedback

            # re: 如何區(qū)分虛擬網(wǎng)卡與物理網(wǎng)卡  回復(fù)  更多評(píng)論   

            2010-06-18 15:50 by nwling
            請(qǐng)問有關(guān)Characteristics這個(gè)值的資料是從哪里找的,為什么我的機(jī)子的取值與你說的不對(duì)應(yīng),

            謝謝

            # re: 如何區(qū)分虛擬網(wǎng)卡與物理網(wǎng)卡  回復(fù)  更多評(píng)論   

            2010-11-15 15:14 by KIM
            目前驗(yàn)證完全正確。謝謝!
            久久久久高潮毛片免费全部播放 | 无码精品久久久久久人妻中字| 久久精品国产一区二区三区| 四虎久久影院| 精品蜜臀久久久久99网站| 久久精品国产精品青草| 亚洲欧美成人久久综合中文网 | 亚洲欧美成人久久综合中文网 | 久久这里只精品99re66| 国内精品人妻无码久久久影院| 久久亚洲精品中文字幕三区| 久久精品国产精品亚洲精品| A级毛片无码久久精品免费| 国内精品久久久久久久久电影网 | 亚洲成色www久久网站夜月| 久久精品亚洲精品国产欧美| 久久亚洲精品国产精品| 尹人香蕉久久99天天拍| 国产成人精品久久综合| 2021少妇久久久久久久久久| 精品伊人久久久| 四虎亚洲国产成人久久精品| 伊人丁香狠狠色综合久久| 精品人妻久久久久久888| 中文国产成人精品久久不卡| 亚洲国产日韩欧美综合久久| 精品熟女少妇aⅴ免费久久| 久久精品一区二区| 一级做a爰片久久毛片16| 97久久天天综合色天天综合色hd| 777午夜精品久久av蜜臀| 久久久久久久久66精品片| 久久久国产99久久国产一| 婷婷久久五月天| 久久久久亚洲国产| 精品国产乱码久久久久软件| 久久精品国产AV一区二区三区| 久久精品国产亚洲AV蜜臀色欲 | 国产精品久久久久久吹潮| 久久香蕉国产线看观看精品yw | 一本久久a久久精品亚洲|