AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi DisableThreadLibraryCalls und COM-Objekte
Thema durchsuchen
Ansicht
Themen-Optionen

DisableThreadLibraryCalls und COM-Objekte

Ein Thema von scp · begonnen am 28. Jul 2004 · letzter Beitrag vom 28. Jul 2004
Antwort Antwort
scp

Registriert seit: 31. Okt 2003
1.120 Beiträge
 
Delphi 7 Personal
 
#1

DisableThreadLibraryCalls und COM-Objekte

  Alt 28. Jul 2004, 00:29
Habe mal vor einer halben Ewigkeit eine Kontextmenü-Shell Extension geschrieben, die läuft auch wunderbar.
Nun dachte ich mir, machste mal ein Property Sheet (nonVCL nach dem )Tutorial. Hier treten aufeinmal Ausnahmefehler auf, wenn ich bei mehreren Dateien hintereinander auf Rechtsklick->Eigenschaften gehe. Er zeigt mir das Property Sheet mehrmals korrekt an, bei weiteren Versuchen stürzt das aufrufende Programm (WinNC) dann ab.

Baue ich aber DisableThreadLibraryCalls in DLL_PROCESS_ATTACH ein, klappt es wunderbar. Jetzt zu meinen eigentlichen Fragen:

1. Habe ich irgendwelche "unsichtbaren" Nachteile, wenn ich DisableThreadLibraryCalls einsetze?
2. Was bewirkt das überaupt?
  Mit Zitat antworten Zitat
NicoDE
(Gast)

n/a Beiträge
 
#2

Re: DisableThreadLibraryCalls und COM-Objekte

  Alt 28. Jul 2004, 01:23
Zitat von scp:
1. Habe ich irgendwelche "unsichtbaren" Nachteile, wenn ich DisableThreadLibraryCalls einsetze?
2. Was bewirkt das überaupt?
DisableThreadLibraryCalls sorgt dafür, dass das Modul nicht mehr über das Erzeugen/Beenden von Threads im aktuelle Prozeß informiert wird. Kurz, DllMain wird nicht mehr mit DLL_THREAD_ATTACH/DLL_THREAD_DETACH aufgerufen.
Die DllMain ist bei Delphi-DLLs in der RunTime Library (RTL) gekapselt. Die Variablen DllProc und DllProcEx ermöglichen es, über die Aufrufe der DllMain informiert zu werden.

Ich sehe nur drei Möglichkeiten:
- deine LibraryProc(Ex) (falls vorhanden) reagiert falsch auf DLL_THREAD_ATTACH/DLL_THREAD_DETACH
- die RTL/Packages/Komponenten reagieren aufgrund unzureichender Konfiguration falsch (siehe IsMultiThread)
- die RTL hat einen Bug

Ansonsten kommen nur noch die üblichen Programmierfehler in betracht

Hast Du einen Call-Stack von dem Fehler?
  Mit Zitat antworten Zitat
scp

Registriert seit: 31. Okt 2003
1.120 Beiträge
 
Delphi 7 Personal
 
#3

Re: DisableThreadLibraryCalls und COM-Objekte

  Alt 28. Jul 2004, 02:52
- Möglichkeit 1 kann es nicht sein, da ich ja erst eine LibraryProc eingefügt hab, nachdem der Fehler schon aufgetreten war
- Möglichkeit 2 denke ich mal auch nicht, da ich nur eine leere ActiveX-Bibliothek und ein COM-Objekt (Property Sheet) nach dem Tutorial verwenden brauche und schon tritt der Fehler auf.
- Möglichkeit 3 könnte sein, kann ich natürlich nicht beurteilen.

Einen Call-Stack habe ich nicht, wie komme ich da ran?
Ich krieg immer nur verschiedenste Fehlermeldungen, z.B. "EResourceNotFound: TForm3 not found" oder so ähnlich (WinNc 2000 ist auch ein Delphi-Prog, klappt aber bei allen anderen Shell Extensions die auf meinem System sind perfekt).
  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 06:03 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