Sources
Delphi Russian Knowledge Base
DRKB - это самая большая и удобная в использовании база знаний по Дельфи в рунете, составленная Виталием Невзоровым

Имена сетевого адаптера, системное имя устройства и описание

01.01.2007

Имя виртуального устройства можно получить вот так:

 


 
 
const
  MAX_ADAPTER_NAME      
= 255;
type
  PIP_ADAPTER_INDEX_MAP
= ^IP_ADAPTER_INDEX_MAP;
  IP_ADAPTER_INDEX_MAP
= record
     
Index: DWORD;
     
Name: array [0..MAX_ADAPTER_NAME-1] of WideChar;
 
end;
 
  PIP_INTERFACE_INFO
= ^IP_INTERFACE_INFO;
  IP_INTERFACE_INFO
= record
     
NumAdapters: Longint;
     
Adapter: array [0..0] of IP_ADAPTER_INDEX_MAP;
 
end;
 
 
function GetIfEntry(pIfRow: PMibIfRow): DWORD; stdcall external 'iphlpapi.dll';
 
function GetNumberOfInterfaces(var pdwIntf: DWORD): DWORD; stdcall; external 'iphlpapi.dll';
 
function GetInterfaceInfo(pIfTable: PIP_INTERFACE_INFO; var dwOutBufLen:DWORD): DWORD;
    stdcall
; external 'iphlpapi.dll';
 
function GetAdapterIndex(AdapterName: PWideChar; var IfIndex: DWORD): DWORD;
    stdcall
; external 'iphlpapi.dll';
 
procedure
TMainForm.Button1Click(Sender: TObject);
var
  I
, pdwIntf, dwOutBufLen, IfIndex: DWORD;
  lpInfo
: PIP_INTERFACE_INFO;
  mirIfDescr
: TMibIfRow;
begin
 
//if GetNumberOfInterfaces(pdwIntf) = NO_ERROR then
 
//begin
   
GetInterfaceInfo(nil, dwOutBufLen);
   
GetMem(lpInfo, dwOutBufLen);
   
try
     
if GetInterfaceInfo(lpInfo, dwOutBufLen) = NO_ERROR then
     
begin
       
for I := 0 to lpInfo^.NumAdapters - 1 do
       
begin
          Memo1
.Lines.Add('AdapterName: ' + lpInfo^.Adapter[I].Name);
         
if GetAdapterIndex(lpInfo^.Adapter[I].Name, IfIndex) = NO_ERROR then
            Memo1
.Lines.Add('AdapterIndex: ' + IntToStr(IfIndex))
         
else
           
RaiseLastOSError;
         
ZeroMemory(@mirIfDescr, SizeOf(TMibIfRow));
          mirIfDescr
.dwIndex := IfIndex;
         
if GetIfEntry(@mirIfDescr) = NO_ERROR then
            Memo1
.Lines.Add('AdapterDescription: ' + mirIfDescr.bDescr)
         
else
           
RaiseLastOSError;
       
end;
     
end
     
else
       
RaiseLastOSError;
   
finally
     
FreeMem(lpInfo);
   
end;
 
end
 
//else
   
//RaiseLastOSError;
end;

 
 

Взято из https://forum.sources.ru

Автор: Rouse_