Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (WinAPI, Konsole) » DLL sicher nachladen

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
28.10.2008, 21:54 Uhr
~mata
Gast


Hallo Leuts,

bin noch etwas unerfahren was Programmierung betrifft und stehe nun vor folgender Frage. Wie kann ich eine DLL in mein Programm sicher nachladen, so dass wenn Fehler in der bereitgestellten DLL-Funktion auftreten und das Betriebssystem diese beendet nicht mein Programm mit beendet wird. Also irgendwelche Speicherzugriffsverletzungen oder so.

Generiert Windows Exceptions die ich behandeln kann bzw. welche Fehler (Fatal Error) werden behandelt? Sollte ich meine DLL in einem extra Thread starten? Wie kann ich dann überprüfen das meine DLL dafür zuständig war, dass der Thread beendet wurde?

Ich weiß meine Fragen sind etwas wirr, dass liegt aber daran das ich die Problematik noch nicht so richtig durchstiegen habe. Für Hinweise wie ich mich diese Aufgabe nähere wäre ich sehr dankbar. Bisher habe ich die DLL mit LoadLibrary() geladen.

Gruß,

Matthias
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
29.10.2008, 08:12 Uhr
stephanw
localhorst


Du kannst das Laden ja in einen try-catch-Block stecken. Und ja, auch durch Speicherzugriffsfehler o.ä. werden Ausnahmen durch Windows generiert, das ist zumindest meine Erfahrung. Inwieweit das garantiert ist, findest Du sicherlich in irgendwelchen Dokumentationen von MicroSoft.


C++:

void f()
{
  try
  {
    ::LoadLibrary(...); // oder eine andere Funktion, die das kapselt
  }
  catch (const MyLibraryException& e) // Ausnahmen, die beim Laden des "Plugins" geworfen werden dürfen
  {
    // Mist
  }
  catch (...) // alles andere, z.B. auch Windows-Ausnahmen
  {
    // auch Mist
  }
  
}



Du kannst sogar die Windows-Ausnahmen übersetzen in eine Exception-Klasse Deiner Wahl (z.B. eine von std::exception abgeleitete Klasse). Code dazu findet man im Netz.
--
Reden ist Schweigen und Silber ist Gold.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (WinAPI, Konsole) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: