如题。在 哪里能找到它们的关联关系?我现在需要的是找到指定网卡对应的符号链接名。 用GetAdaptersInfo枚举网卡我会了,GetAdaptersInfo 就可以获得相关的描述信息,但是对应的 符号链接 如何找到呢?恳请赐教例如: 设备管理器里 有个网卡  Realtek8139 xxxx #2,那么我需要根据这个字串来找到它对应的 符号链接,或者是能让Createfile函数所支持的名称也行。 因为我需要打开指定的网卡。

解决方案 »

  1.   

    读取注册表 “HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\NetworkCards”//-----------------------------------------------------------------  
      // 取得所有网卡信息  
      //-----------------------------------------------------------------  
      BOOL   GetAdapterInfo()  
      {  
      //   这里的代码适合WINDOWS2000,对于NT需要读取HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows   NT\CurrentVersion\NetworkCards  
      HKEY   hKey,   hSubKey,   hNdiIntKey;  
       
      if(RegOpenKeyEx(HKEY_LOCAL_MACHINE,  
      "SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\NetworkCards",  
      0,  
      KEY_READ,  
      &hKey)   !=   ERROR_SUCCESS)  
      return   FALSE;  
       
      DWORD   dwIndex   =   0;  
      DWORD   dwBufSize   =   256;  
      DWORD   dwDataType;  
      char   szSubKey[256];  
      unsigned   char   szData[256];  
       
      while(RegEnumKeyEx(hKey,   dwIndex++,   szSubKey,   &dwBufSize,   NULL,   NULL,   NULL,   NULL)   ==   ERROR_SUCCESS)  
      {  
      //AfxMessageBox(szSubKey);  
      if(RegOpenKeyEx(hKey,   szSubKey,   0,   KEY_READ,   &hSubKey)   ==   ERROR_SUCCESS)  
      {  
      if(RegOpenKeyEx(hSubKey,   "Ndi\\Interfaces",   0,   KEY_READ,   &hNdiIntKey)   ==   ERROR_SUCCESS)  
      {  
      dwBufSize   =   256;  
      if(RegQueryValueEx(hNdiIntKey,   "LowerRange",   0,   &dwDataType,   szData,   &dwBufSize)   ==   ERROR_SUCCESS)  
      {  
      if(strcmp((char*)szData,   "ethernet")   ==   0) // 判断是不是以太网卡  
      {  
      dwBufSize   =   256;  
      if(RegQueryValueEx(hSubKey,   "DriverDesc",   0,   &dwDataType,   szData,   &dwBufSize)   ==   ERROR_SUCCESS)  
      {  
      ADAPTER_INFO   *pAI   =   new   ADAPTER_INFO;  
      pAI->strDriverDesc   =   (LPCTSTR)szData;  
      //AfxMessageBox((LPCTSTR)szData);  
      dwBufSize   =   256;  
      if(RegQueryValueEx(hSubKey,   "NetCfgInstanceID",   0,   &dwDataType,   szData,   &dwBufSize)   ==   ERROR_SUCCESS)  
      {  
      pAI->strName   =   (LPCTSTR)szData;  
      //AfxMessageBox((LPCTSTR)szData);  
      RegGetIP(pAI,   (LPCTSTR)szData);  
      //AfxMessageBox((LPCTSTR)szData);  
      }  
      AdapterInfoVector.push_back(pAI); //   加入到容器中  
      }  
      }  
      }  
      RegCloseKey(hNdiIntKey);  
      }  
      RegCloseKey(hSubKey);  
      }  
       
      dwBufSize   =   256;  
      } /*   end   of   while   */  
       
      RegCloseKey(hKey);