<?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[Verständnissfrage zu HANDLEs (z.B. Events kopieren)]]></title><description><![CDATA[<p>Guten Morgen! <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
<p>Ich habe mich gerade mit Events beschäftigt und zwei Klassen geschrieben, die entsprechende WinAPI-Funktionen (CreateEvent, WaitForSingleObject, WaitForMultipleObjects, CloseHandle) kapseln.</p>
<p>Dabei ist mir aufgefallen, dass ich eigentlich (fast) nichts über HANDLEs weiß. Vor allem stelle ich mir die Frage, ob man HANDLEs einfach kopieren darf.</p>
<p>Zum Beispiel: In zwei Objekten möchte ich auf das selbe Event reagieren. Das Event soll als Member in den Objekten gespeichert werden. Muss das HANDLE dann irgendwo erzeugt werden und als Referenz oder via Zeiger an die Objekte weitergegeben werden, oder geht auch ein Copy-By-Value?</p>
<p>Möchte jemand Kaffee? Milch, Zucker...? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/topic/242376/verständnissfrage-zu-handles-z-b-events-kopieren</link><generator>RSS for Node</generator><lastBuildDate>Sun, 05 Apr 2026 11:18:40 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/242376.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 03 Jun 2009 06:40:17 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Verständnissfrage zu HANDLEs (z.B. Events kopieren) on Wed, 03 Jun 2009 07:43:51 GMT]]></title><description><![CDATA[<p>Guten Morgen! <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
<p>Ich habe mich gerade mit Events beschäftigt und zwei Klassen geschrieben, die entsprechende WinAPI-Funktionen (CreateEvent, WaitForSingleObject, WaitForMultipleObjects, CloseHandle) kapseln.</p>
<p>Dabei ist mir aufgefallen, dass ich eigentlich (fast) nichts über HANDLEs weiß. Vor allem stelle ich mir die Frage, ob man HANDLEs einfach kopieren darf.</p>
<p>Zum Beispiel: In zwei Objekten möchte ich auf das selbe Event reagieren. Das Event soll als Member in den Objekten gespeichert werden. Muss das HANDLE dann irgendwo erzeugt werden und als Referenz oder via Zeiger an die Objekte weitergegeben werden, oder geht auch ein Copy-By-Value?</p>
<p>Möchte jemand Kaffee? Milch, Zucker...? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1720098</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1720098</guid><dc:creator><![CDATA[Roger Wilco]]></dc:creator><pubDate>Wed, 03 Jun 2009 07:43:51 GMT</pubDate></item><item><title><![CDATA[Reply to Verständnissfrage zu HANDLEs (z.B. Events kopieren) on Wed, 03 Jun 2009 10:31:03 GMT]]></title><description><![CDATA[<p>Du kannst HANDLES im Prinzip wie Zeiger kopieren.<br />
D.h. du kannst ohne weiteres mehrere Klassen haben wo das HANDLE einfach &quot;by value&quot; kopiert wurde, aber du musst sicherstellen, dass es nur 1x freigegeben wird (CloseHandle).</p>
<p>Wenn du ein HANDLE so kopieren willst, dass du es 2x mit CloseHandle zumachen kannst, musst du DuplicateHandle verwenden. Dann bekommst du einen neuen HANDLE Wert, der auf das selbe Objekt verweist, aber eben getrennt &quot;geschlossen&quot; werden kann (muss).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1720229</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1720229</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Wed, 03 Jun 2009 10:31:03 GMT</pubDate></item><item><title><![CDATA[Reply to Verständnissfrage zu HANDLEs (z.B. Events kopieren) on Wed, 03 Jun 2009 11:04:07 GMT]]></title><description><![CDATA[<p>Danke hustbar. Ich habe es vermutet aber nicht gewusst.</p>
<p>In meinem Event-Konzept ist es eh so geregelt, dass meine Event-Objekte (die die WinApi kapseln) nur als Smart-Pointer &quot;im Umlauf&quot; sind. Daher wird sicher gestellt, dass pro Event es nur ein Objekt gibt und dieses dann bei seiner Zerstörung den HANDLE per CloseHandle() freigibt.</p>
<p>Hat mich aber mal interessiert, ob man auch die HANDLEs kopieren kann. Als ich dazu suchte, fand ich nirgendwo mal ein Hinweis, dass das geht oder jemand macht. Wenn z.B. Event-Handles verteilt wurden, dann oftmals via gemeinsamen Variablenzugriff oder per Aufruf durch OpenEvent().</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1720252</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1720252</guid><dc:creator><![CDATA[Roger Wilco]]></dc:creator><pubDate>Wed, 03 Jun 2009 11:04:07 GMT</pubDate></item><item><title><![CDATA[Reply to Verständnissfrage zu HANDLEs (z.B. Events kopieren) on Wed, 03 Jun 2009 15:45:38 GMT]]></title><description><![CDATA[<p>OpenEvent kann man nehmen, wenn das Ding einen Namen hat, und man den Namen kennt, ja.<br />
Sonst wie erwähnt DuplicateHandle. (DuplicateHandle hab' ich kaum jemals irgendwo gebraucht)</p>
<p>Üblich ist es, solche &quot;HANDLE Wrapper-Klassen&quot; einfach &quot;noncopyable&quot; zu machen. Dann kann man die garnicht kopieren/zuweisen, kann also nix falsch machen. Rumreichen tut man die dann als (shared_)ptr.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1720522</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1720522</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Wed, 03 Jun 2009 15:45:38 GMT</pubDate></item><item><title><![CDATA[Reply to Verständnissfrage zu HANDLEs (z.B. Events kopieren) on Wed, 03 Jun 2009 16:13:40 GMT]]></title><description><![CDATA[<p>hustbaer schrieb:</p>
<blockquote>
<p>Üblich ist es, solche &quot;HANDLE Wrapper-Klassen&quot; einfach &quot;noncopyable&quot; zu machen. Dann kann man die garnicht kopieren/zuweisen, kann also nix falsch machen. Rumreichen tut man die dann als (shared_)ptr.</p>
</blockquote>
<p>Ganz genau so mache ich es auch (Uncopyable + Fabrikmethode + boost::shared_ptr).</p>
<p>(Endlich mache ich etwas richtig! Für irgendwas muss das ganze Foren-Lesen ja gut sein^^ ;))</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1720541</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1720541</guid><dc:creator><![CDATA[Roger Wilco]]></dc:creator><pubDate>Wed, 03 Jun 2009 16:13:40 GMT</pubDate></item></channel></rss>