AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Prozedureinsprungpunkt "TraceMessage" in "ADVAPI32.dll" nicht gefunden
Thema durchsuchen
Ansicht
Themen-Optionen

Prozedureinsprungpunkt "TraceMessage" in "ADVAPI32.dll" nicht gefunden

Ein Thema von CodeX · begonnen am 19. Aug 2010 · letzter Beitrag vom 21. Aug 2010
Antwort Antwort
CodeX

Registriert seit: 30. Okt 2004
475 Beiträge
 
Delphi 12 Athens
 
#1

Prozedureinsprungpunkt "TraceMessage" in "ADVAPI32.dll" nicht gefunden

  Alt 19. Aug 2010, 03:33
Ich versuche erfolglos herauszufinden, warum ein bestimmtes Projekt unter Windows2000 nicht starten möchte. Ab XP startet es problemlos, jedoch bei 2000 erscheint direkt beim Start folgende Meldung und das Programm wird gar nicht erst angezeigt.
Code:
Der Prozedureinsprungpunkt "TraceMessage" wurde in der DLL "ADVAPI32.dll" nicht gefunden.
Nun habe ich zwar schon herausgefunden, dass TraceMessage erst ab XP vorhanden ist und deshalb meckert 2000. Aber ich kann beim besten Willen nicht finden, wo TraceMessage in dem Projekt überhaupt vorkommt. Ich habe alle *.pas Dateien nach TraceMessage und ADVAPI32 durchsuchen lassen, aber nichts gefunden. Das heißt irgendetwas ruft irgendetwas auf, wo dann TraceMessage dynamisch verlinkt ist.

Nun habe ich Delphi aber nicht unter Win2000 installiert und kann das entsprechend auch nicht debuggen.

Wie gehe ich am besten vor, um herauszufinden, an welcher Stelle auf TraceMessage zugegriffen wird?
Oder kann ich im Projekt generell irgendwie sagen, dass diese Funktion unter 2000 nicht geladen werden soll?
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#2

AW: Prozedureinsprungpunkt "TraceMessage" in "ADVAPI32.dll" nicht gefunden

  Alt 19. Aug 2010, 04:34
Nutzt du irgendwas zur Fehleranalyse in deinem Programm, wie z.B. MadExcept?

Tritt der Fehler direkt beim Start auf oder erst später?
(eventuell mal über F7, F8 und Co. versuchen rauszufinden, wo sich dieses versteckt)
$2B or not $2B
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.201 Beiträge
 
Delphi 10.4 Sydney
 
#3

AW: Prozedureinsprungpunkt "TraceMessage" in "ADVAPI32.dll" nicht gefunden

  Alt 19. Aug 2010, 07:17
Hol dir mal den Dependency Walker. Evtl. ist es ja nich die Exe direkt die das verursacht sondern eine DLL welche diese Methode bindet.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
CodeX

Registriert seit: 30. Okt 2004
475 Beiträge
 
Delphi 12 Athens
 
#4

AW: Prozedureinsprungpunkt "TraceMessage" in "ADVAPI32.dll" nicht gefunden

  Alt 19. Aug 2010, 13:33
Nutzt du irgendwas zur Fehleranalyse in deinem Programm, wie z.B. MadExcept?
Hatte ich bislang nicht. Hab mir jetzt aber mal dieses MadExcept installiert. Laut Beschreibung war das sehr vielversprechend. Das Einbinden hat wohl auch geklappt (die exe ist gut 10% größer geworden), aber beim Ausführen unter 2000 kommt noch genau der gleiche alte Fehler. Ist wohl keine Exception zur Laufzeit, sondern beim Initialisieren - und da scheint das nicht zu funktionieren.

Tritt der Fehler direkt beim Start auf oder erst später?
Kommt direkt nach einem Doppelklick auf die exe. Nach der Bestätigung erscheint das Programm gar nicht erst.

Hol dir mal den Dependency Walker. Evtl. ist es ja nich die Exe direkt die das verursacht sondern eine DLL welche diese Methode bindet.
Bin nicht so ganz sicher, was ich mit dem Tool alles machen kann, aber ich glaube, damit komme ich auch nicht weiter. Links in der Baumstruktur sehe ich die ADVAPI32.DLL als direkten Zweig von dem Programm (also kein Unterzweig), wird also wohl direkt eingebunden. Aber das ist kaum Verwunderlich. Diese DLL verwenden die meisten Programme. Nur dieses TracecMessage kam eben erst nach Win2000 hinzu. Rechts unten kann ich die Funktion auch finden, aber ich weiß nicht, was ich mit den Infos Ordinal, Hint und Entrypoint (ntdll.EtwTraceMessage) machen kann.

Auf jeden Fall vielen Dank für die Ideen! Habt Ihr vielleicht noch andere Ansätze?
  Mit Zitat antworten Zitat
CodeX

Registriert seit: 30. Okt 2004
475 Beiträge
 
Delphi 12 Athens
 
#5

AW: Prozedureinsprungpunkt "TraceMessage" in "ADVAPI32.dll" nicht gefunden

  Alt 21. Aug 2010, 03:19
Habs hinbekommen.
Habe die DLL ausfindig gemacht, die auf die Funktion aus der anderen DLL zugegriffen hat und habe die DLL jetzt anders eingebunden. Da Delphi erst ab Version 2010 Delayed DLL Loading unterstützt, habe ich mich für meine 2006er Version dieser Methode hier bedient: http://hallvards.blogspot.com/2008/0...g-of-dlls.html
Für den Fall, dass es jemanden interessiert, die man DLLs nur bei Bedarf laden kann, ohne sie aufwändig explizit einbinden zu müssen.

Geändert von CodeX (21. Aug 2010 um 03:22 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort


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 08:06 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz