在编译虚拟网卡驱动tap-win32时,在AdapterCreate函数中,从注册表中读取MAC地址时,NdisReadConfiguration总是返回NDIS_STATUS_FAILTURE。
可是前面读取其他的数据如MTU、MediaStatus时都是成功返回的。
程序如下:/* Read MTU setting from registry */
{
      NDIS_STRING key = NDIS_STRING_CONST("MTU");      
      //NdisReadConfiguration返回NDIS_STATUS_SUCCESS;
      
          
      NdisReadConfiguration (&status, &parm, configHandle,
     &key, NdisParameterInteger);
      if (status == NDIS_STATUS_SUCCESS)
      {
  if (parm->ParameterType == NdisParameterInteger)
  {
      int mtu = parm->ParameterData.IntegerData;
      if (mtu < MINIMUM_MTU)
mtu = MINIMUM_MTU;
      if (mtu > MAXIMUM_MTU)
mtu = MAXIMUM_MTU;
      l_Adapter->m_MTU = mtu;
  }
       }
 }
/* Read optional MAC setting from registry */
{
      NDIS_STRING key = NDIS_STRING_CONST("MAC");
      ANSI_STRING mac_string;     
     //NdisReadConfiguration返回NDIS_STATUS_FAILTURE;
     //MSDN上的解释是找不到指定的键;
     
  
      NdisReadConfiguration (&status, &parm, configHandle,
     &key, NdisParameterString);
      if (status == NDIS_STATUS_SUCCESS)
      {
  if (parm->ParameterType == NdisParameterString)
  {
      if (RtlUnicodeStringToAnsiString (&mac_string, &parm->ParameterData.StringData, TRUE) == STATUS_SUCCESS)
      {
  l_MacFromRegistry = ParseMAC (l_Adapter->m_MAC, mac_string.Buffer);
  RtlFreeAnsiString (&mac_string);
      }
  }
       }
}
INF文件中的相关部分是:
   HKR, Ndi\params\MTU,                  ParamDesc, 0, "MTU"
   HKR, Ndi\params\MTU,                  Type,      0, "int"
   HKR, Ndi\params\MTU,                  Default,   0, "1500"
   HKR, Ndi\params\MTU,                  Optional,  0, "0"
   HKR, Ndi\params\MTU,                  Min,       0, "100"
   HKR, Ndi\params\MTU,                  Max,       0, "1500"
   HKR, Ndi\params\MTU,                  Step,      0, "1"   HKR, Ndi\params\MAC,                  ParamDesc, 0, "MAC Address"
   HKR, Ndi\params\MAC,                  Type,      0, "edit"
   HKR, Ndi\params\MAC,                  Optional,  0, "1"
   HKR, Ndi\params\MAC,                  Default,   0, ""在驱动安装结束后,可以看到MTU和MAC键都是同一级别的子键。
请大家帮我分析一下可能的原因,谢谢了。