diff --git a/src/Neo6/NDIS6.c b/src/Neo6/NDIS6.c index d9a8fe1d..628ac3da 100644 --- a/src/Neo6/NDIS6.c +++ b/src/Neo6/NDIS6.c @@ -119,6 +119,7 @@ static UINT64 max_speed = NEO_MAX_SPEED_DEFAULT; static bool keep_link = false; +static UINT reg_if_type = IF_TYPE_ETHERNET_CSMACD; BOOLEAN PsGetVersion( @@ -350,8 +351,8 @@ NDIS_STATUS NeoNdisInitEx(NDIS_HANDLE MiniportAdapterHandle, gen.AccessType = NET_IF_ACCESS_BROADCAST; gen.DirectionType = NET_IF_DIRECTION_SENDRECEIVE; gen.ConnectionType = NET_IF_CONNECTION_DEDICATED; - gen.IfType = IF_TYPE_ETHERNET_CSMACD; - gen.IfConnectorPresent = TRUE; + gen.IfType = reg_if_type; + gen.IfConnectorPresent = FALSE; gen.SupportedStatistics = NDIS_STATISTICS_FLAGS_VALID_DIRECTED_FRAMES_RCV | NDIS_STATISTICS_FLAGS_VALID_MULTICAST_FRAMES_RCV | @@ -897,6 +898,20 @@ BOOL NeoLoadRegistory() keep_link = keep; + // Read the *IfType value + name = NewUnicode("*IfType"); + NdisReadConfiguration(&ret, ¶m, config, GetUnicode(name), NdisParameterInteger); + FreeUnicode(name); + + if (NG(ret) || param->ParameterType != NdisParameterInteger) + { + reg_if_type = IF_TYPE_ETHERNET_CSMACD; + } + else + { + reg_if_type = param->ParameterData.IntegerData; + } + // Close the config handle NdisCloseConfiguration(config);