<?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[Fehlerhafte Rückgabe für akt. LW beim Ausführen von GetVolumeInformation()]]></title><description><![CDATA[<p>Hallo allerseits!<br />
Habe einen interessanten aber auch ärgerlichen Bug bei o.g. Funktion gefunden.<br />
Rufe ich <strong>GetVolumeInformation()</strong> zum Beispiel aus einer Anwendung aus auf, die unter *<em>d:\ordner*</em> gespeichert ist, so liefert die Funktion mir für das Laufwerk *<em>d:*</em> einfach nur Müll. Für alle anderen Laufwerke bekomme ich (zumindest anscheinend) richtige Werte. Rufe ich die Anwendung allerdings von *<em>d:*</em> aus auf, dann bekomme ich auch für *<em>d:*</em> vernünftige Werte.<br />
Habe unter XP SP2 entwickelt und getestet.</p>
<p>Was meint ihr dazu?!? Hat jemand eine Idee/Lösung, wie ich dieses Problem umschiffen kann?</p>
<p>Gruß, Oli</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/106961/fehlerhafte-rückgabe-für-akt-lw-beim-ausführen-von-getvolumeinformation</link><generator>RSS for Node</generator><lastBuildDate>Tue, 30 Jun 2026 02:24:45 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/106961.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 14 Apr 2005 22:15:27 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Fehlerhafte Rückgabe für akt. LW beim Ausführen von GetVolumeInformation() on Thu, 14 Apr 2005 22:15:27 GMT]]></title><description><![CDATA[<p>Hallo allerseits!<br />
Habe einen interessanten aber auch ärgerlichen Bug bei o.g. Funktion gefunden.<br />
Rufe ich <strong>GetVolumeInformation()</strong> zum Beispiel aus einer Anwendung aus auf, die unter *<em>d:\ordner*</em> gespeichert ist, so liefert die Funktion mir für das Laufwerk *<em>d:*</em> einfach nur Müll. Für alle anderen Laufwerke bekomme ich (zumindest anscheinend) richtige Werte. Rufe ich die Anwendung allerdings von *<em>d:*</em> aus auf, dann bekomme ich auch für *<em>d:*</em> vernünftige Werte.<br />
Habe unter XP SP2 entwickelt und getestet.</p>
<p>Was meint ihr dazu?!? Hat jemand eine Idee/Lösung, wie ich dieses Problem umschiffen kann?</p>
<p>Gruß, Oli</p>
]]></description><link>https://www.c-plusplus.net/forum/post/767145</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/767145</guid><dc:creator><![CDATA[der oli]]></dc:creator><pubDate>Thu, 14 Apr 2005 22:15:27 GMT</pubDate></item><item><title><![CDATA[Reply to Fehlerhafte Rückgabe für akt. LW beim Ausführen von GetVolumeInformation() on Fri, 15 Apr 2005 12:49:52 GMT]]></title><description><![CDATA[<p>Was ist Müll? Wo ist der Quelltext? <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/767488</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/767488</guid><dc:creator><![CDATA[masterofx32]]></dc:creator><pubDate>Fri, 15 Apr 2005 12:49:52 GMT</pubDate></item><item><title><![CDATA[Reply to Fehlerhafte Rückgabe für akt. LW beim Ausführen von GetVolumeInformation() on Fri, 15 Apr 2005 17:13:52 GMT]]></title><description><![CDATA[<p>Ja, ist ein guter Punkt <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>Dies ist also die Funktion, die ich aufrufe:</p>
<pre><code class="language-cpp">DWORD s_lpFileSystemFlags;
    TCHAR drive[64];
    TCHAR s_lpVolumeName[MAX_PATH];
    TCHAR s_lpFileSystemNameBuffer[MAX_PATH];

    // Edit-&gt;Text enthält zum Aufrufzeitpunkt einen einzelnen Buchstaben, z.B. 'd'
    _splitpath( (Edit1-&gt;Text+&quot;:\\&quot;).c_str(), drive, NULL, NULL, NULL );

    GetVolumeInformation( drive, s_lpVolumeName, MAX_PATH, NULL, NULL,
        &amp;s_lpFileSystemFlags, s_lpFileSystemNameBuffer, MAX_PATH);

    // Fehlerbehandlung und -ausschrift
    DWORD error = GetLastError();
    TCHAR szBuf[512];
    LPVOID lpMsgBuf;
    FormatMessage(
			FORMAT_MESSAGE_ALLOCATE_BUFFER | 
			FORMAT_MESSAGE_FROM_SYSTEM,
			NULL,
			error,
			MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
			(LPTSTR) &amp;lpMsgBuf,
			0, NULL

                 );

    wsprintf(szBuf, &quot;error %d: %s&quot;, error, lpMsgBuf);
    // Ausgabe in Nachrichtenfenster
    Memo2-&gt;Lines-&gt;Add(AnsiString(szBuf));
    LocalFree(lpMsgBuf);
    //...
</code></pre>
<p>Im Fehlerfalle (wie im ersten Beitrag beschrieben) tritt der <strong>&quot;error 123: Die Syntax für den Dateinamen, Verzeichnisnamen oder die Datenträgerbezeichnung ist falsch.&quot;</strong> auf und er gibt für alle im Funktionsaufruf abgerufenen Werte halt Stringmüll a la &quot;ÿÿ&quot; zurück. Die Ausgabe habe ich in ein TMemo gepackt (BCB).<br />
Was sagt ihr?</p>
<p>Gruß, Oli und schönes Wochenende <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f921.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--clown_face"
      title=":clown:"
      alt="🤡"
    /> der alte witz...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/767713</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/767713</guid><dc:creator><![CDATA[der oli]]></dc:creator><pubDate>Fri, 15 Apr 2005 17:13:52 GMT</pubDate></item><item><title><![CDATA[Reply to Fehlerhafte Rückgabe für akt. LW beim Ausführen von GetVolumeInformation() on Fri, 15 Apr 2005 21:27:12 GMT]]></title><description><![CDATA[<p><strong>drive</strong> muss ein Pfad und keine Laufwerksangabe sein, es fehlt also noch der Backslash (d:\). Vergisst man diesen, so schlägt die Funktion aus irgendwelchen geheimen,WinAPI-internen Gründen auf dem aktuellen Laufwerk in einem Unterverzeichnis fehl. <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>
]]></description><link>https://www.c-plusplus.net/forum/post/767966</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/767966</guid><dc:creator><![CDATA[masterofx32]]></dc:creator><pubDate>Fri, 15 Apr 2005 21:27:12 GMT</pubDate></item><item><title><![CDATA[Reply to Fehlerhafte Rückgabe für akt. LW beim Ausführen von GetVolumeInformation() on Sat, 16 Apr 2005 11:07:49 GMT]]></title><description><![CDATA[<p>den doppelpunkt und backslash habe ich ja angefügt:<br />
[cpp]_splitpath( (<strong>Edit1-&gt;Text+&quot;:\&quot;</strong>).c_str(), drive, NULL, NULL, NULL );[/cpp]das ist leider nicht des rätsels lösung. der driveletter ist schon in ordnung, ich lasse ihn mir ja sicherheitshalber auch noch mal ausgeben und er ist, wie er sein sollte, also **d:**.<br />
Wie gesagt, die Funktion arbeitet korrekt für alle Laufwerke, außer für das, von dem aus das Programm gerufen wird...</p>
<p>Gruß, Oli</p>
]]></description><link>https://www.c-plusplus.net/forum/post/768203</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/768203</guid><dc:creator><![CDATA[der oli]]></dc:creator><pubDate>Sat, 16 Apr 2005 11:07:49 GMT</pubDate></item><item><title><![CDATA[Reply to Fehlerhafte Rückgabe für akt. LW beim Ausführen von GetVolumeInformation() on Sat, 16 Apr 2005 12:31:50 GMT]]></title><description><![CDATA[<p>Mag sein, dass dein Ursprungspfad richtig ist, aber du nutzt ja die Funktion splitpath und die hängt an drive eben keinen Backslash ran.</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;

int main() {
	char *drive = new char[10];

	_splitpath( &quot;d:\\unsorted\\tmp\\123.test&quot; , drive, NULL, NULL, NULL ); 

	std::cout &lt;&lt; drive;

	std::cin.get();
}
</code></pre>
<p>Ausgabe:</p>
<pre><code>d:
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/768267</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/768267</guid><dc:creator><![CDATA[masterofx32]]></dc:creator><pubDate>Sat, 16 Apr 2005 12:31:50 GMT</pubDate></item><item><title><![CDATA[Reply to Fehlerhafte Rückgabe für akt. LW beim Ausführen von GetVolumeInformation() on Sun, 17 Apr 2005 21:27:47 GMT]]></title><description><![CDATA[<blockquote>
<p>Mag sein, dass dein Ursprungspfad richtig ist, aber du nutzt ja die Funktion splitpath und die hängt an drive eben keinen Backslash ran.</p>
</blockquote>
<p>ja, da hast du den nagel auf den kopf getroffen. leider habe ich vorher immer nur daneben gehauen. sorry für den aufwand. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /></p>
<p>aber auch danke fürs justieren des hammers <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ß, oli</p>
]]></description><link>https://www.c-plusplus.net/forum/post/769151</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/769151</guid><dc:creator><![CDATA[der oli]]></dc:creator><pubDate>Sun, 17 Apr 2005 21:27:47 GMT</pubDate></item></channel></rss>