Toon posts:

[DELPHI] Dependency checking

Pagina: 1
Acties:

Verwijderd

Topicstarter
Probleem:

Een Delphi applicatie die een fatale fout genereerd in een Windows XP Home omgeving. (Mircosoft error report geeft aan dat de fout origineert in Kernel32.dll.)


Resultaten onderzoek:

Na een scan met Dependency Walker lijken de volgende DLL's niet te bestaan of niet volledig:
- efsadu.dll niet aanwezig
msdn.mircosoft.com/library vertelt mij dat dit een User Interface Core van het Encrypted File System (EFS) is. (Wat dan dan ook moge zijn, zover ik weet doe ik hier niks mee in mijn applicatie.)

- mpr.dll mist WNetRestoreConnectionA functie
msdn.mircosoft.com/library vertelt mij het volgende "The Multiple Provider Router (MPR) calls the connection notification functions when it connects or disconnects a network resource. To receive such notifications, you can implement these functions in a DLL"

De eerste DLL heb ik simpelweg toegevoegd aan de windows/system32 directory. De tweede DLL heb ik via Safe Mode overschreven met een nieuwere versie van de DLL (04-08-2004).

Helaas kan ik ook nu niet mijn applicatie opstarten. Na nog een dependency check blijkt nog steeds de desbetreffende functie in mpr.dll niet aanwezig te zijn. Feitelijk zou deze functie niet eens belangrijk moeten zijn, aangezien het een Windows9x functie is en Windows XP afstamt van de NT versies en daarom de xxxW functies zou moeten gebruiken. (http://groups.google.nl/g...=4&hl=nl#9ad474fe13db2bdd)

Heeft iemand ervaringen met bovenstaande en is iemand bereid deze ervaringen met mij te delen?

  • miniBSD
  • Registratie: Augustus 2002
  • Laatst online: 20-12-2023
Je moet nooit zomaar systeem dll's overschrijven. Als je applicatie een kritieke fout genereert kijk eerst eens naar je errorhandling met name in de constructors van de de forms en classes die je project bij het opstarten laadt.

Quidquid latine dictum sit, altum sonatur (Whatever is said in Latin sounds profound).


Verwijderd

Topicstarter
miniBSD schreef op dinsdag 18 oktober 2005 @ 11:13:
Je moet nooit zomaar systeem dll's overschrijven.
Inderdaad slechte eigenschap. Echter, dit is een test PC, dus alles is geoorloofd om de echte fout te achterhalen.

In mijn opening post ben ik echter niet geheel volledig geweest. Alle kritieke acties worden in geval van fouten gelogd. Middels het TApplicationEvents events component, heb ik ook een ShowMessage trachten te simuleren. Helaas worden er geen error logs gegenereerd en wordt er geen MessageDialog getoond. Hieruit mag ik, lijkt me, concluderen dat geen enkele code in mijn FormCreate wordt aangeroepen en dat daarom de fout origineert in de pre-loading.

Verwijderd

Topicstarter
Geen die-hard Delphi programmeurs met een suggestie?

  • LordLarry
  • Registratie: Juli 2001
  • Niet online

LordLarry

Aut disce aut discede

Zet Use Debug DCUs een en kijk of je ergens in de Delphi IDE komt. Gebruik de Dependency Walker's Profile functie om beter te achterhalen waar, wanneer en waarom de fout optreed. Probeer producten als MadExcept. Sloop verdachte code uit je applicatie net zolang totdat het wel draait.

We adore chaos because we like to restore order - M.C. Escher