<?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[Callback Win32 Dll]]></title><description><![CDATA[<p>Hallo Leute,</p>
<p>evtl. könnt ihr mir helfen, ich habe eine Win32 Dll in VS 2010 geschrieben welche in einem VB Programm geladen wird, auf den Quellcode des Programmes habe ich keinen Zugriff.</p>
<p>Die Callbackfunktion funktioniert auch, solange ich diese aus dem Mainthread der DLL aufrufe. Sobald ich aber einen Thread erstelle (in dessen ein Loop läuft der den Status von bestimmter Hardware abfragt) und aus diesem die Callbackfunktion aufrufe stürzt das VB Programm ab.</p>
<p>hier mal ein Aufruf</p>
<pre><code>ExecuteCallback(&quot;Interrupt&quot;,&quot;Befehl&quot;);
</code></pre>
<p>und die Callbackfunktion</p>
<pre><code>long ExecuteCallback(const char* FuncName, const char* Para=&quot; &quot;,const int ParaLen=-1,const int Flags=0,const char* ReturnString= &quot; &quot;)
 {
 typedef long (__stdcall *FUNCPTR)(const char* a,const char* b,const int c,const int d, const char* e);

		 FUNCPTR vbFunc=0;

		 vbFunc = (FUNCPTR)CallbackAddress;     

	return(vbFunc(FuncName,Para,ParaLen,Flags,ReturnString));
}
</code></pre>
<p>Die CallbackAddress ist egal ob diese vom Hauptthread aufgerufen wird oder vom Thread gleich.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/312564/callback-win32-dll</link><generator>RSS for Node</generator><lastBuildDate>Sun, 02 Aug 2026 19:36:07 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/312564.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 08 Jan 2013 06:26:38 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Callback Win32 Dll on Tue, 08 Jan 2013 06:26:38 GMT]]></title><description><![CDATA[<p>Hallo Leute,</p>
<p>evtl. könnt ihr mir helfen, ich habe eine Win32 Dll in VS 2010 geschrieben welche in einem VB Programm geladen wird, auf den Quellcode des Programmes habe ich keinen Zugriff.</p>
<p>Die Callbackfunktion funktioniert auch, solange ich diese aus dem Mainthread der DLL aufrufe. Sobald ich aber einen Thread erstelle (in dessen ein Loop läuft der den Status von bestimmter Hardware abfragt) und aus diesem die Callbackfunktion aufrufe stürzt das VB Programm ab.</p>
<p>hier mal ein Aufruf</p>
<pre><code>ExecuteCallback(&quot;Interrupt&quot;,&quot;Befehl&quot;);
</code></pre>
<p>und die Callbackfunktion</p>
<pre><code>long ExecuteCallback(const char* FuncName, const char* Para=&quot; &quot;,const int ParaLen=-1,const int Flags=0,const char* ReturnString= &quot; &quot;)
 {
 typedef long (__stdcall *FUNCPTR)(const char* a,const char* b,const int c,const int d, const char* e);

		 FUNCPTR vbFunc=0;

		 vbFunc = (FUNCPTR)CallbackAddress;     

	return(vbFunc(FuncName,Para,ParaLen,Flags,ReturnString));
}
</code></pre>
<p>Die CallbackAddress ist egal ob diese vom Hauptthread aufgerufen wird oder vom Thread gleich.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2287446</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2287446</guid><dc:creator><![CDATA[Mounty]]></dc:creator><pubDate>Tue, 08 Jan 2013 06:26:38 GMT</pubDate></item><item><title><![CDATA[Reply to Callback Win32 Dll on Tue, 08 Jan 2013 09:01:46 GMT]]></title><description><![CDATA[<p>Mounty schrieb:</p>
<blockquote>
<p>Die Callbackfunktion funktioniert auch, solange ich diese aus dem Mainthread der DLL aufrufe. Sobald ich aber einen Thread erstelle (in dessen ein Loop läuft der den Status von bestimmter Hardware abfragt) und aus diesem die Callbackfunktion aufrufe stürzt das VB Programm ab.</p>
</blockquote>
<p>Klingt als wär die VB Funktion eben nicht thread-safe. Lösung des Problems: Die VB Funktion thread-safe machen...</p>
<p>Mounty schrieb:</p>
<blockquote>
<p>Die CallbackAddress ist egal ob diese vom Hauptthread aufgerufen wird oder vom Thread gleich.</p>
</blockquote>
<p>Klar, wieso sollte sich auch unterschiedlich sein? <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>
]]></description><link>https://www.c-plusplus.net/forum/post/2287469</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2287469</guid><dc:creator><![CDATA[dot]]></dc:creator><pubDate>Tue, 08 Jan 2013 09:01:46 GMT</pubDate></item><item><title><![CDATA[Reply to Callback Win32 Dll on Wed, 09 Jan 2013 15:50:54 GMT]]></title><description><![CDATA[<p>ok danke, das hatte ich befürchtet.<br />
Kann man nicht irgendwie einen Workaround basteln? z.B. sich in Prozess der Anwendung einklinken? (hooken)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2287986</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2287986</guid><dc:creator><![CDATA[Mounty]]></dc:creator><pubDate>Wed, 09 Jan 2013 15:50:54 GMT</pubDate></item><item><title><![CDATA[Reply to Callback Win32 Dll on Wed, 09 Jan 2013 15:59:14 GMT]]></title><description><![CDATA[<p>Von wo aus genau willst du dich in den Prozess der Anwendung einklinken und was genau versprichst du dir davon!?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2287989</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2287989</guid><dc:creator><![CDATA[dot]]></dc:creator><pubDate>Wed, 09 Jan 2013 15:59:14 GMT</pubDate></item><item><title><![CDATA[Reply to Callback Win32 Dll on Fri, 11 Jan 2013 00:29:30 GMT]]></title><description><![CDATA[<p>Hmm in den Messageloop einklinen, aber das würde wohl auch nichts bringen.</p>
<p>Kann ich von meiner DLL aus etwas machen? Denn die *.ocx Erweiterungen funktioniert ja auch in VB welche eigene Threads erzeugen und Ereignisse auslösen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2288572</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2288572</guid><dc:creator><![CDATA[Mounty]]></dc:creator><pubDate>Fri, 11 Jan 2013 00:29:30 GMT</pubDate></item></channel></rss>