AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Sporadische Zugriffsverletzung bei LoadLibrary
Thema durchsuchen
Ansicht
Themen-Optionen

Sporadische Zugriffsverletzung bei LoadLibrary

Ein Thema von RWarnecke · begonnen am 28. Mai 2008 · letzter Beitrag vom 29. Mai 2008
 
Benutzerbild von RWarnecke
RWarnecke

Registriert seit: 31. Dez 2004
Ort: Stuttgart
4.408 Beiträge
 
Delphi XE8 Enterprise
 
#1

Sporadische Zugriffsverletzung bei LoadLibrary

  Alt 28. Mai 2008, 18:44
Hallo zusammmen,

in der nachfolgenden Procedure meldet sich EurekaLog mit zwei Zeilen. Ich kann aber nicht richtig nachvollziehen, warum er sich gerade an den beiden Stellen meldet :
Delphi-Quellcode:
procedure TNetworkInfos.GetAdapterAddresses(AdapterName: string;
   var Ethertype, DNSSuffix, FriendlyName:string;
   var LinkSpeed :int64; var Mtu, Flags: integer);
var
  adapteraddr:pip_adapter_addresses;
  buffer:dword;
  Error:dword;
  hdll: THandle;
  AdaptersAddresses: TGetAdapterAdresses;
  FixedInfo: PFixedInfo;
  BufLen: ULONG;
  reg: TRegistry;
  I: Integer;
  TempAdapterName: string;
begin // <--- Erste Zeile wo EurekaLog sich meldet
  hdll := LoadLibrary('IPHLPAPI.DLL');
  if hdll <> 0 then
  begin
    @AdaptersAddresses := GetProcAddress(hdll, 'GetAdaptersAddresses');
    if @AdaptersAddresses <> nil then
    begin
      error := AdaptersAddresses(AF_UNSPEC, 10, nil, nil, @buffer);
      if error <> ERROR_BUFFER_OVERFLOW then
        exit;
      adapteraddr := AllocMem(buffer);
      error := AdaptersAddresses(AF_UNSPEC, 10, nil, adapteraddr, @buffer);
      if error = ERROR_SUCCESS then
      begin
        while adapteraddr.Next <> nil do
        begin
          if AdapterName = adapteraddr.AdapterName then
          begin
            case adapteraddr.IfType of
              IF_TYPE_ETHERNET_CSMACD : EtherType := 'Ethernet';
              IF_TYPE_SOFTWARE_LOOPBACK : EtherType := 'Loopback';
              IF_TYPE_TUNNEL : EtherType := 'Tunnel';
              IF_TYPE_IEEE1394 : EtherType := 'FireWire 1394';
              IF_TYPE_IEEE80211 : EtherType := 'WLAN - Interface';
              IF_TYPE_PPP : EtherType := 'PPP - Interface';
            end;
            DNSSuffix := WideCharToString(adapteraddr.DnsSuffix);
            FriendlyName := WideCharToString(adapteraddr.FriendlyName);
            LinkSpeed := round(adapteraddr.ReceiveLinkSpeed / 1000000);
            Mtu := adapteraddr.Mtu;
            Flags := adapteraddr.Flags;
          end;
          adapteraddr := adapteraddr.Next;
        end;
      end //<--- Zweite Zeile wo sich EurekaLog meldet
      else
      begin
        FreeLibrary(hdll);
        exit;
      end;
    end
    else
    begin
      TempAdapterName := '';
      FixedInfo := PFIXEDINFO( GlobalAlloc( GPTR, sizeof(FIXEDINFO) ) );
      BufLen := sizeof( FIXEDINFO );
      if GetNetworkParams(FixedInfo, @BufLen) = ERROR_BUFFER_OVERFLOW then
      begin
        GlobalFree( Cardinal(FixedInfo) );
        FixedInfo := PFIXEDINFO( GlobalAlloc( GPTR, BufLen ) );
      end;
      if GetNetworkParams(FixedInfo, @BufLen) = ERROR_SUCCESS then
      begin
        DNSSuffix := FixedInfo.DomainName;
      end;
      GlobalFree( Cardinal(FixedInfo) );
      case pAdapterList.dwType of
        IF_TYPE_ETHERNET_CSMACD : EtherType := 'Ethernet';
        IF_TYPE_SOFTWARE_LOOPBACK : EtherType := 'Loopback';
        IF_TYPE_TUNNEL : EtherType := 'Tunnel';
        IF_TYPE_IEEE1394 : EtherType := 'FireWire 1394';
        IF_TYPE_IEEE80211 : EtherType := 'WLAN - Interface';
        IF_TYPE_PPP : EtherType := 'PPP - Interface';
      end;
      reg := TRegistry.Create();
      reg.RootKey := HKEY_LOCAL_MACHINE;
      try
        for I := 0 to Length(pAdapterList.AdapterName) - 1 do
         if pAdapterList.AdapterName[i] <> 'then
           TempAdapterName := TempAdapterName + pAdapterList.AdapterName[i];
        if reg.OpenKeyReadOnly(w2knetcard + '\' + TempAdapterName + '\Connection') then
          FriendlyName := reg.ReadString('Name')
        else
          FriendlyName := 'unbekannt';
      finally
        reg.CloseKey;
        reg.Free;
      end;
    end;
    FreeLibrary(hdll);
  end;
end;
Könnt Ihr mir da irgendwie weiterhelfen ?
Rolf Warnecke
App4Mission
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:29 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz