The adapter name is actually the GUID. Also store the human recognizable description. This brings the network control panel applet a step further. Modified: trunk/reactos/drivers/net/tcpip/datalink/lan.c Modified: trunk/reactos/drivers/net/tcpip/include/ip.h _____
Modified: trunk/reactos/drivers/net/tcpip/datalink/lan.c --- trunk/reactos/drivers/net/tcpip/datalink/lan.c 2006-01-06 22:57:21 UTC (rev 20632) +++ trunk/reactos/drivers/net/tcpip/datalink/lan.c 2006-01-06 23:13:23 UTC (rev 20633) @@ -781,8 +781,8 @@
static NTSTATUS CheckForDeviceDesc( PUNICODE_STRING EnumKeyName, PUNICODE_STRING TargetKeyName, - PUNICODE_STRING ShortName, - PUNICODE_STRING OutName ) { + PUNICODE_STRING Name, + PUNICODE_STRING DeviceDesc ) { UNICODE_STRING RootDevice = { 0 }, LinkageKeyName = { 0 }; UNICODE_STRING DescKeyName = { 0 }, Linkage = { 0 }; UNICODE_STRING BackSlash = { 0 }; @@ -809,14 +809,14 @@ Status = ReadStringFromRegistry( LinkageKey, L"RootDevice", &RootDevice ); if( !NT_SUCCESS(Status) ) goto cleanup;
- if( RtlCompareUnicodeString( &RootDevice, ShortName, TRUE ) == 0 ) { + if( RtlCompareUnicodeString( &RootDevice, Name, TRUE ) == 0 ) { Status = OpenRegistryKey( &DescKeyName, &DescKey ); if( !NT_SUCCESS(Status) ) goto cleanup;
- Status = ReadStringFromRegistry( DescKey, L"DriverDesc", OutName ); + Status = ReadStringFromRegistry( DescKey, L"DriverDesc", DeviceDesc ); if( !NT_SUCCESS(Status) ) goto cleanup;
- TI_DbgPrint(DEBUG_DATALINK,("ADAPTER NAME: %wZ\n", OutName)); + TI_DbgPrint(DEBUG_DATALINK,("ADAPTER DESC: %wZ\n", DeviceDesc)); } else Status = STATUS_UNSUCCESSFUL;
cleanup: @@ -831,8 +831,8 @@ return Status; }
-static NTSTATUS FindDeviceNameForAdapter( PUNICODE_STRING ShortName, - PUNICODE_STRING OutName ) { +static NTSTATUS FindDeviceDescForAdapter( PUNICODE_STRING Name, + PUNICODE_STRING DeviceDesc ) { UNICODE_STRING EnumKeyName, TargetKeyName; HANDLE EnumKey; NTSTATUS Status; @@ -872,7 +872,7 @@ TargetKeyName.Buffer = Kbio->Name;
Status = CheckForDeviceDesc - ( &EnumKeyName, &TargetKeyName, ShortName, OutName ); + ( &EnumKeyName, &TargetKeyName, Name, DeviceDesc ); if( NT_SUCCESS(Status) ) { NtClose( EnumKey ); return Status; @@ -880,25 +880,30 @@ } }
- RtlInitUnicodeString( OutName, L"" ); - AppendUnicodeString( OutName, &TargetKeyName, FALSE ); + RtlInitUnicodeString( DeviceDesc, L"" ); + AppendUnicodeString( DeviceDesc, &TargetKeyName, FALSE ); NtClose( EnumKey ); return STATUS_UNSUCCESSFUL; }
-VOID GetShortName( PUNICODE_STRING RegistryKey, - PUNICODE_STRING ShortNameOut ) { +VOID GetName( PUNICODE_STRING RegistryKey, + PUNICODE_STRING OutName ) { PWCHAR Ptr; - ShortNameOut->Buffer = + UNICODE_STRING PartialRegistryKey; + + PartialRegistryKey.Buffer = RegistryKey->Buffer + wcslen(CCS_ROOT L"\Services\"); - Ptr = ShortNameOut->Buffer; + Ptr = PartialRegistryKey.Buffer;
while( *Ptr != L'\' && ((PCHAR)Ptr) < ((PCHAR)RegistryKey->Buffer) + RegistryKey->Length ) Ptr++;
- ShortNameOut->Length = ShortNameOut->MaximumLength = - (Ptr - ShortNameOut->Buffer) * sizeof(WCHAR); + PartialRegistryKey.Length = PartialRegistryKey.MaximumLength = + (Ptr - PartialRegistryKey.Buffer) * sizeof(WCHAR); + + RtlInitUnicodeString( OutName, L"" ); + AppendUnicodeString( OutName, &PartialRegistryKey, FALSE ); }
VOID BindAdapter( @@ -920,14 +925,11 @@ ULONG Lookahead = LOOKAHEAD_SIZE; NTSTATUS Status; HANDLE RegHandle = 0; - UNICODE_STRING ShortName;
TI_DbgPrint(DEBUG_DATALINK, ("Called.\n"));
Adapter->State = LAN_STATE_OPENING;
- GetShortName( RegistryPath, &ShortName ); - NdisStatus = NDISCall(Adapter, NdisRequestSetInformation, OID_GEN_CURRENT_LOOKAHEAD, @@ -963,11 +965,14 @@ * services (ZwOpenKey, etc). */
+ GetName( RegistryPath, &IF->Name ); + Status = OpenRegistryKey( RegistryPath, &RegHandle );
if(NT_SUCCESS(Status)) { - Status = FindDeviceNameForAdapter( &ShortName, &IF->Name ); - TI_DbgPrint(DEBUG_DATALINK,("Adapter Name: %wZ\n", &IF->Name)); + Status = FindDeviceDescForAdapter( &IF->Name, &IF->Description ); + TI_DbgPrint(DEBUG_DATALINK,("Adapter Description: %wZ\n", + &IF->Description)); }
DefaultMask.Type = IP_ADDRESS_V4; _____
Modified: trunk/reactos/drivers/net/tcpip/include/ip.h --- trunk/reactos/drivers/net/tcpip/include/ip.h 2006-01-06 22:57:21 UTC (rev 20632) +++ trunk/reactos/drivers/net/tcpip/include/ip.h 2006-01-06 23:13:23 UTC (rev 20633) @@ -150,7 +150,8 @@
IP_ADDRESS PointToPoint; /* Point to point address */ IP_ADDRESS Netmask; /* Netmask */ IP_ADDRESS Broadcast; /* Broadcast */ - UNICODE_STRING Name; /* Adapter name */ + UNICODE_STRING Name; /* Adapter name (GUID) */ + UNICODE_STRING Description; /* Adapter description (Human readable) */ PUCHAR Address; /* Pointer to interface address */ UINT AddressLength; /* Length of address in bytes */ UINT Index; /* Index of adapter (used to add ip addr) */