На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
Модераторы: Rouse_, jack128, Krid
  
    > Имена сетевого адаптера , системное имя устройства и описание
      Имя виртуального устройства можно получить вот так:

      ExpandedWrap disabled
        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;


      Автор: Rouse_
      0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
      0 пользователей:


      Рейтинг@Mail.ru
      [ Script execution time: 0,0152 ]   [ 17 queries used ]   [ Generated: 19.04.24, 16:13 GMT ]