<?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[Laufwerksbuchstabe bei WM_Devicechange]]></title><description><![CDATA[<p>In meinem service empfange ich SERVICE_CONTROL_DEVICEEVENT Messages. Nun will ich, bei einem neuen Volume den Laufwerksbuchstaben angeziegt bekommen.<br />
Wenn ich nun probiere unitmask auszulesen, bekomme ich im service ein anderen Laufwerksbuchtaben als wenn ich da ganze mit einer normalen Win32 anwendungs mit fenster mache.<br />
Service:</p>
<pre><code class="language-cpp">case SERVICE_CONTROL_DEVICEEVENT:
         if(dwEventType == DBT_DEVICEARRIVAL)
         {
                if(((PDEV_BROADCAST_HDR)lpEventData)-&gt;dbch_devicetype==DBT_DEVTYP_DEVICEINTERFACE)
                {
                        Beep(1000,500);
                        PDEV_BROADCAST_VOLUME pDb = (PDEV_BROADCAST_VOLUME)lpEventData;
                        cDrive = FirstDriveFromMask(pDb-&gt;dbcv_unitmask);
                        MessageBox(NULL,
                        ((AnsiString)cDrive).c_str(),
                        &quot;Laufwerksbuchstabe&quot;,
                        MB_SERVICE_NOTIFICATION);
                }
         }
         break;
</code></pre>
<p>Win32:</p>
<pre><code class="language-cpp">case DBT_DEVICEARRIVAL:
                  Form1-&gt;ListBox2-&gt;AddItem(&quot;DBT_DEVICEARRIVAL&quot;,Form1);
                  pDB = (PDEV_BROADCAST_VOLUME)Msg.LParam;
                  cDrive = FirstDriveFromMask(pDB-&gt;dbcv_unitmask);
                  Label2-&gt;Caption = cDrive;
                  Label4-&gt;Caption = (int)cDrive;
                  Label5-&gt;Caption = (int)((PDEV_BROADCAST_VOLUME)Msg.LParam);
                  path = cDrive;
                  Label6-&gt;Caption = path;
                  break;
</code></pre>
<p>Zudem bekomme ich z.B. wenn ich einen USB Stick einstecke 3 messages. Davon enthält nur die letzte den richtigen Laufwerksbuchstaben. Diese Message mit dem richtigen Laufwerksbuchstaben kommt aber anscheinend nicht beim service an.</p>
<p>Weiß zu dem Thema jemand etwas?</p>
<p>MFG<br />
Ace</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/180758/laufwerksbuchstabe-bei-wm_devicechange</link><generator>RSS for Node</generator><lastBuildDate>Wed, 08 Jul 2026 15:04:33 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/180758.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 06 May 2007 10:39:55 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Laufwerksbuchstabe bei WM_Devicechange on Sun, 06 May 2007 10:39:55 GMT]]></title><description><![CDATA[<p>In meinem service empfange ich SERVICE_CONTROL_DEVICEEVENT Messages. Nun will ich, bei einem neuen Volume den Laufwerksbuchstaben angeziegt bekommen.<br />
Wenn ich nun probiere unitmask auszulesen, bekomme ich im service ein anderen Laufwerksbuchtaben als wenn ich da ganze mit einer normalen Win32 anwendungs mit fenster mache.<br />
Service:</p>
<pre><code class="language-cpp">case SERVICE_CONTROL_DEVICEEVENT:
         if(dwEventType == DBT_DEVICEARRIVAL)
         {
                if(((PDEV_BROADCAST_HDR)lpEventData)-&gt;dbch_devicetype==DBT_DEVTYP_DEVICEINTERFACE)
                {
                        Beep(1000,500);
                        PDEV_BROADCAST_VOLUME pDb = (PDEV_BROADCAST_VOLUME)lpEventData;
                        cDrive = FirstDriveFromMask(pDb-&gt;dbcv_unitmask);
                        MessageBox(NULL,
                        ((AnsiString)cDrive).c_str(),
                        &quot;Laufwerksbuchstabe&quot;,
                        MB_SERVICE_NOTIFICATION);
                }
         }
         break;
</code></pre>
<p>Win32:</p>
<pre><code class="language-cpp">case DBT_DEVICEARRIVAL:
                  Form1-&gt;ListBox2-&gt;AddItem(&quot;DBT_DEVICEARRIVAL&quot;,Form1);
                  pDB = (PDEV_BROADCAST_VOLUME)Msg.LParam;
                  cDrive = FirstDriveFromMask(pDB-&gt;dbcv_unitmask);
                  Label2-&gt;Caption = cDrive;
                  Label4-&gt;Caption = (int)cDrive;
                  Label5-&gt;Caption = (int)((PDEV_BROADCAST_VOLUME)Msg.LParam);
                  path = cDrive;
                  Label6-&gt;Caption = path;
                  break;
</code></pre>
<p>Zudem bekomme ich z.B. wenn ich einen USB Stick einstecke 3 messages. Davon enthält nur die letzte den richtigen Laufwerksbuchstaben. Diese Message mit dem richtigen Laufwerksbuchstaben kommt aber anscheinend nicht beim service an.</p>
<p>Weiß zu dem Thema jemand etwas?</p>
<p>MFG<br />
Ace</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1279604</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1279604</guid><dc:creator><![CDATA[AceKiller73]]></dc:creator><pubDate>Sun, 06 May 2007 10:39:55 GMT</pubDate></item><item><title><![CDATA[Reply to Laufwerksbuchstabe bei WM_Devicechange on Mon, 07 May 2007 12:14:31 GMT]]></title><description><![CDATA[<p>*push*<br />
Warum bekomme ich in meinem Dienst einen anderen laufwerksbuchstaben raus als bei meiner Win32 anwendung?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1280253</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1280253</guid><dc:creator><![CDATA[AceKiller73]]></dc:creator><pubDate>Mon, 07 May 2007 12:14:31 GMT</pubDate></item><item><title><![CDATA[Reply to Laufwerksbuchstabe bei WM_Devicechange on Mon, 07 May 2007 13:55:22 GMT]]></title><description><![CDATA[<p>AceKiller73 schrieb:</p>
<blockquote>
<p>Zudem bekomme ich z.B. wenn ich einen USB Stick einstecke 3 messages.</p>
</blockquote>
<p>Hi Ace!</p>
<p>Lass mich raten: DBT_MEDIAREMOVAL,DBT_DEVICEARRIVAL,DBT_MEDIAARRIVAL?<br />
(Wenn's die alls überhaupt gibt)</p>
<p>Mir fällt zur Unterscheidung zwischen Service/UserApp noch ein dass User sich ja eigene Mappings festlegen können (z.B. &quot;net use&quot;), vielleicht hat's damit zu tun?</p>
<p>Grüsse</p>
<p>*this</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1280328</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1280328</guid><dc:creator><![CDATA[Gast++]]></dc:creator><pubDate>Mon, 07 May 2007 13:55:22 GMT</pubDate></item><item><title><![CDATA[Reply to Laufwerksbuchstabe bei WM_Devicechange on Thu, 10 May 2007 19:21:18 GMT]]></title><description><![CDATA[<p>Falls du in dem Programm schon an den Namen des Volumes gekommen bist, könntest du mit &quot;GetVolumePathNamesForVolumeName&quot; alle zugeordneten Pfade ermitteln. Unter NTFS bzw. Win2000/WinXP kannst du einen USB-Stick ja als Ordner innerhalb einer anderen Partition mounten, so dass eventuell gar kein Laufwerksbuchstabe existiert.</p>
<p>Die mehrfachen Messages sind mir auch schon aufgefallen. Ich vermute, dass die Messages einmal für das Device (den Stick selbst), als auch für das Erscheinen des Volumes sowie des Laufwerks bzw. Pfads jeweils gesendet werden. Dies würde auch erklären, warum erst beim 3. Mal ein Laufwerk enthalten ist. Wenn man einen USB Stick einsteckt, blendet im SysTray das Icon für die sichere Hardwareentfernung auch 3x auf und der Balloon Tooltip wechselt mehrfach. Wenn man sich dann dort die Gerätekomponenten anzeigen lässt (Checkbox), sieht man auch 3 Einträge:</p>
<p>+ USB-Massenspeichergerät<br />
|- Name des Sticks<br />
|- Zugeordnete Volume(s)</p>
<p>Eventuell hilft dir auch noch dieser Beitrag weiter:<br />
<a href="http://www.c-plusplus.net/forum/viewtopic-var-t-is-178153.html" rel="nofollow">http://www.c-plusplus.net/forum/viewtopic-var-t-is-178153.html</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1282629</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1282629</guid><dc:creator><![CDATA[AlexB]]></dc:creator><pubDate>Thu, 10 May 2007 19:21:18 GMT</pubDate></item></channel></rss>