<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[SetUnhandledExceptionFilter mit EXCEPTION_CONTINUE_EXECUTION Problem]]></title><description><![CDATA[<p>Hallo zusammen,</p>
<p>hab was kniffliges was auch in den Assemblerbereich gehören könnte, da ich aber (fast) kein Assembler kann, fühle ich mich hier besser aufgehoben <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
<p>Ich verwende in meinem Programm <em>SetUnhandledExceptionFilter</em> um ungehandelte Exceptions abzufangen.<br />
Meine Frage ist nun wie ich nach der Exception mein Programm weiter laufen lassen kann, wenn es möglich ist (ist über <em>ExceptionFlags</em> vorgegeben)?</p>
<p>Einfach <em>EXCEPTION_CONTINUE_EXECUTION</em> zurüchzugeben reicht nicht, da der EIP immer noch an der Stelle der Exception steht.<br />
Im Internet habe ich ein Beispiel gefunden in dem er den EIP einfach eins hochzählt, allerdings führte das bei mir immer nur zu weiteren Exceptions und endlos Callstacks. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /></p>
<p>Hoffe mir kann hier jemand helfen, oder jemand weiß wer es wissen könnte <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
<p>Gruß<br />
yogle</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/157827/setunhandledexceptionfilter-mit-exception_continue_execution-problem</link><generator>RSS for Node</generator><lastBuildDate>Wed, 22 Jul 2026 05:52:37 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/157827.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 29 Aug 2006 19:56:37 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to SetUnhandledExceptionFilter mit EXCEPTION_CONTINUE_EXECUTION Problem on Tue, 29 Aug 2006 19:56:37 GMT]]></title><description><![CDATA[<p>Hallo zusammen,</p>
<p>hab was kniffliges was auch in den Assemblerbereich gehören könnte, da ich aber (fast) kein Assembler kann, fühle ich mich hier besser aufgehoben <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
<p>Ich verwende in meinem Programm <em>SetUnhandledExceptionFilter</em> um ungehandelte Exceptions abzufangen.<br />
Meine Frage ist nun wie ich nach der Exception mein Programm weiter laufen lassen kann, wenn es möglich ist (ist über <em>ExceptionFlags</em> vorgegeben)?</p>
<p>Einfach <em>EXCEPTION_CONTINUE_EXECUTION</em> zurüchzugeben reicht nicht, da der EIP immer noch an der Stelle der Exception steht.<br />
Im Internet habe ich ein Beispiel gefunden in dem er den EIP einfach eins hochzählt, allerdings führte das bei mir immer nur zu weiteren Exceptions und endlos Callstacks. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /></p>
<p>Hoffe mir kann hier jemand helfen, oder jemand weiß wer es wissen könnte <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
<p>Gruß<br />
yogle</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1127189</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1127189</guid><dc:creator><![CDATA[yogle]]></dc:creator><pubDate>Tue, 29 Aug 2006 19:56:37 GMT</pubDate></item><item><title><![CDATA[Reply to SetUnhandledExceptionFilter mit EXCEPTION_CONTINUE_EXECUTION Problem on Wed, 30 Aug 2006 05:42:38 GMT]]></title><description><![CDATA[<p>Grob gesagt: Es geht nicht.<br />
Auf eine unhandled exception kannst Du nicht einfach weitermachen. Du hast ja keine Ahnung, warum diese aufgetreten ist geschweige denn wo Du fortsetzen sollst.</p>
<p>Baue ein try __except da ein wo eine Exception auftreten kann, dann hast Du es &quot;korrekt&quot; gelöst.</p>
<p>Es mag zwar Situationen geben, wo man nach einer Unhandled Exception ein Stück weitermachen kann, aber diese sind doch sehr beschränkt und auf keinen Fall allgemein anwendbar.</p>
<p>Also: Prozess beenden und nötigenfalls zuvor sich selber nochmals starten.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1127278</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1127278</guid><dc:creator><![CDATA[Jochen Kalmbach]]></dc:creator><pubDate>Wed, 30 Aug 2006 05:42:38 GMT</pubDate></item><item><title><![CDATA[Reply to SetUnhandledExceptionFilter mit EXCEPTION_CONTINUE_EXECUTION Problem on Thu, 31 Aug 2006 15:43:00 GMT]]></title><description><![CDATA[<p>Ich hab das mal gemacht, allerdings nur für den Spezialfall einer Breakpoint-Exception (int 3). In dem Fall ist dann die Länge des Opcodes bekannt (1 von int 3). Ich denke, dass der Beispielcode für diesen Fall gedacht war. Ansonsten verschiebt das ändern des IP dich unter Umständen mitten in den nächsten Befehl, was dann wohl ziemlich bald zur nächsten Exception führt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1128561</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1128561</guid><dc:creator><![CDATA[musicman]]></dc:creator><pubDate>Thu, 31 Aug 2006 15:43:00 GMT</pubDate></item><item><title><![CDATA[Reply to SetUnhandledExceptionFilter mit EXCEPTION_CONTINUE_EXECUTION Problem on Thu, 31 Aug 2006 16:08:41 GMT]]></title><description><![CDATA[<blockquote>
<p>Ansonsten verschiebt das ändern des IP dich unter Umständen mitten in den nächsten Befehl, was dann wohl ziemlich bald zur nächsten Exception führt.</p>
</blockquote>
<p>Jep so sieht es ziemlich genau aus. Nach einer Versuchs-Access-Violation, musste z.B. zwei mal der EIP erhöht werden, danach konnte das Programm aber weitergeführt werden.<br />
Ob dies Möglich ist, ist halt abhängig von der Art der Exception, z.B. bei einem versuchten Zugriff auf eine Funktion die von einer Dll exportiert wurde und nicht über <em>GetProcAddress</em> initialisiert wurde, steht der EIP dann auf 0x00000000! Heißt, da kann man ihn lange erhöhen, bis man irgendwo in gescheitem Code landet <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /><br />
Und es ist auch davon abhängig was der weitere Code macht. Aber gut die Option lasse ich drinnen.</p>
<p>Danke für eure Antworten</p>
<p>Gruß<br />
yogle</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1128579</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1128579</guid><dc:creator><![CDATA[yogle]]></dc:creator><pubDate>Thu, 31 Aug 2006 16:08:41 GMT</pubDate></item><item><title><![CDATA[Reply to SetUnhandledExceptionFilter mit EXCEPTION_CONTINUE_EXECUTION Problem on Thu, 31 Aug 2006 16:15:58 GMT]]></title><description><![CDATA[<p>yogle schrieb:</p>
<blockquote>
<p>z.B. bei einem versuchten Zugriff auf eine Funktion die von einer Dll exportiert wurde und nicht über <em>GetProcAddress</em> initialisiert wurde, steht der EIP dann auf 0x00000000!</p>
</blockquote>
<p>Das hab ich jetzt nicht ganz verstanden... <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1128583</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1128583</guid><dc:creator><![CDATA[Jochen Kalmbach]]></dc:creator><pubDate>Thu, 31 Aug 2006 16:15:58 GMT</pubDate></item><item><title><![CDATA[Reply to SetUnhandledExceptionFilter mit EXCEPTION_CONTINUE_EXECUTION Problem on Thu, 31 Aug 2006 17:58:10 GMT]]></title><description><![CDATA[<p>Jochen Kalmbach schrieb:</p>
<blockquote>
<p>yogle schrieb:</p>
<blockquote>
<p>z.B. bei einem versuchten Zugriff auf eine Funktion die von einer Dll exportiert wurde und nicht über <em>GetProcAddress</em> initialisiert wurde, steht der EIP dann auf 0x00000000!</p>
</blockquote>
<p>Das hab ich jetzt nicht ganz verstanden... <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
</blockquote>
<p>Lol, ja ich wusste nicht, wie ich es beschreiben sollte.</p>
<p>So was meinte ich:</p>
<pre><code class="language-cpp">typedef BOOL (* BadFunction)(void);

int main()
{
    BadFunction Bad = NULL;

    Bad();    // &lt;-- Hier passiert ja die Exception
}
</code></pre>
<p>Dann ist der EIP bei mir 0, da er ja diese Funktion ausführen will, die aber zeigt auf nichts (0).<br />
Oder sollte das nicht so sein?</p>
<p>Als Möglichkeit solche Dinge zu &quot;umgehen&quot;, könnte man doch die letzte korrekte Stelle des EIP zu nehmen und dann um nicht 1 sonder 2 zu erhöhen.<br />
Ich hätte auch noch einen Disassembler zur Hand (im Programm), mit dem könnte ich doch den kommenden Code disassemblen und den EIP auf die erste korrekte Stelle nach der Exception setzen, würde zumindest die Chance auf ein erfolgreiches Fortsetzen des Programmes erhöhen. Was meint ihr?</p>
<p>Gruß<br />
yogle</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1128641</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1128641</guid><dc:creator><![CDATA[yogle]]></dc:creator><pubDate>Thu, 31 Aug 2006 17:58:10 GMT</pubDate></item><item><title><![CDATA[Reply to SetUnhandledExceptionFilter mit EXCEPTION_CONTINUE_EXECUTION Problem on Thu, 31 Aug 2006 18:21:00 GMT]]></title><description><![CDATA[<p>Warum fragst Du nicht</p>
<pre><code class="language-cpp">if (Bad != NULL) Bad()
</code></pre>
<p>ab?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1128659</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1128659</guid><dc:creator><![CDATA[Jochen Kalmbach]]></dc:creator><pubDate>Thu, 31 Aug 2006 18:21:00 GMT</pubDate></item><item><title><![CDATA[Reply to SetUnhandledExceptionFilter mit EXCEPTION_CONTINUE_EXECUTION Problem on Thu, 31 Aug 2006 18:30:40 GMT]]></title><description><![CDATA[<p>Jochen Kalmbach schrieb:</p>
<blockquote>
<p>Warum fragst Du nicht</p>
<pre><code class="language-cpp">if (Bad != NULL) Bad()
</code></pre>
<p>ab?</p>
</blockquote>
<p>Achso, Jetzt verstehe ich! Ähm ich hab einen Exception Filter Lib programmiert, die von anderen verwendet werden kann.<br />
<a href="http://www.c-plusplus.net/forum/viewtopic-var-t-is-157905.html" rel="nofollow">http://www.c-plusplus.net/forum/viewtopic-var-t-is-157905.html</a></p>
<p>Somit hätte sich die Frage dann auch erledigt, oder?<br />
Aber was hältst du von dem Vorschlag mit dem Disassembler? Hatte sogar mal was gelesen vonwegen den Code zu reparieren. Alles sehr interessant, aber nicht einfach! <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
<p>Gruß<br />
yogle</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1128668</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1128668</guid><dc:creator><![CDATA[yogle]]></dc:creator><pubDate>Thu, 31 Aug 2006 18:30:40 GMT</pubDate></item><item><title><![CDATA[Reply to SetUnhandledExceptionFilter mit EXCEPTION_CONTINUE_EXECUTION Problem on Thu, 31 Aug 2006 18:32:23 GMT]]></title><description><![CDATA[<p>yogle schrieb:</p>
<blockquote>
<p>Aber was hältst du von dem Vorschlag mit dem Disassembler? Hatte sogar mal was gelesen vonwegen den Code zu reparieren.</p>
</blockquote>
<p>Wie ich sachon sagte: Es mag in Spezialfällen gehen; aber <strong>niemals</strong> allgemeingültig.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1128670</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1128670</guid><dc:creator><![CDATA[Jochen Kalmbach]]></dc:creator><pubDate>Thu, 31 Aug 2006 18:32:23 GMT</pubDate></item><item><title><![CDATA[Reply to SetUnhandledExceptionFilter mit EXCEPTION_CONTINUE_EXECUTION Problem on Thu, 31 Aug 2006 18:36:06 GMT]]></title><description><![CDATA[<p>Jochen Kalmbach schrieb:</p>
<blockquote>
<p>yogle schrieb:</p>
<blockquote>
<p>Aber was hältst du von dem Vorschlag mit dem Disassembler? Hatte sogar mal was gelesen vonwegen den Code zu reparieren.</p>
</blockquote>
<p>Wie ich sachon sagte: Es mag in Spezialfällen gehen; aber <strong>niemals</strong> allgemeingültig.</p>
</blockquote>
<p>Ganz klar, aber ich möchte dem User so häufig wie möglich die Möglichkeit geben seine z.B. noch geöffneten Dateien etc. abzuspeichern. Ich schaue mal was sich machen lässt.</p>
<p>Gruß<br />
yogle</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1128676</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1128676</guid><dc:creator><![CDATA[yogle]]></dc:creator><pubDate>Thu, 31 Aug 2006 18:36:06 GMT</pubDate></item><item><title><![CDATA[Reply to SetUnhandledExceptionFilter mit EXCEPTION_CONTINUE_EXECUTION Problem on Thu, 31 Aug 2006 18:38:27 GMT]]></title><description><![CDATA[<p>Die IMHO einzig Sinnvolle Möglichkeit ist, dass Du um alle Codestellen, die Kritisch sein können ein &quot;try-catch/__expect rumbaust und dann dort das &quot;Speichern&quot; aufrufst!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1128679</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1128679</guid><dc:creator><![CDATA[Jochen Kalmbach]]></dc:creator><pubDate>Thu, 31 Aug 2006 18:38:27 GMT</pubDate></item></channel></rss>