<?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[GetLogicalDrives gibt keine Systempartition zurück?]]></title><description><![CDATA[<p>hi.</p>
<p>beim aufruf der funktion GetLogicalDrives bekomm ich an bitindex 1 immer eine 0, wo eigentlich mein c drive ist. alle anderen drives werden problemlos im bitvektor eingetragen. woran liegt das?</p>
<p>andere frage: ich versuche mit GetLogicalDriveStrings die drive buchstaben in TCHAR strings zu bekommen. doch wie schreibt die funktion die buchstaben von drives in das übergebene array? teilt die funktion das array in &quot;segmente&quot; von je 4 arrayzellen (3 für &quot;x:\&quot; + 1 für 0-terminalzeichen) ein und trägt z.b. für drive i den drivebuchstaben ab arrayelement[i*4] ein, auch wenn drive i-1 fehlt, oder schreibt es einfach sequentiell ins array?</p>
<p>danke,</p>
<p>wan-hi</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/80854/getlogicaldrives-gibt-keine-systempartition-zurück</link><generator>RSS for Node</generator><lastBuildDate>Mon, 13 Apr 2026 14:22:32 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/80854.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 25 Jul 2004 17:31:17 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to GetLogicalDrives gibt keine Systempartition zurück? on Sun, 25 Jul 2004 17:31:17 GMT]]></title><description><![CDATA[<p>hi.</p>
<p>beim aufruf der funktion GetLogicalDrives bekomm ich an bitindex 1 immer eine 0, wo eigentlich mein c drive ist. alle anderen drives werden problemlos im bitvektor eingetragen. woran liegt das?</p>
<p>andere frage: ich versuche mit GetLogicalDriveStrings die drive buchstaben in TCHAR strings zu bekommen. doch wie schreibt die funktion die buchstaben von drives in das übergebene array? teilt die funktion das array in &quot;segmente&quot; von je 4 arrayzellen (3 für &quot;x:\&quot; + 1 für 0-terminalzeichen) ein und trägt z.b. für drive i den drivebuchstaben ab arrayelement[i*4] ein, auch wenn drive i-1 fehlt, oder schreibt es einfach sequentiell ins array?</p>
<p>danke,</p>
<p>wan-hi</p>
]]></description><link>https://www.c-plusplus.net/forum/post/567999</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/567999</guid><dc:creator><![CDATA[Wan-Hi]]></dc:creator><pubDate>Sun, 25 Jul 2004 17:31:17 GMT</pubDate></item><item><title><![CDATA[Reply to GetLogicalDrives gibt keine Systempartition zurück? on Sun, 25 Jul 2004 18:53:35 GMT]]></title><description><![CDATA[<p>Hallo Wan-Hi,<br />
Probleme sollte es mit der Funktion eigendlich nicht geben.<br />
Zeig mal den Codeausschnitt den du dafür verwendest.</p>
<p>Das Format des Rückgabestrings lautet:<br />
c:\&lt;null&gt;d:\&lt;null&gt;&lt;null&gt;<br />
PS: GetLogicalDriveStrings liefert auf einen<br />
Unicode-System automatisch Unicode zurück.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/568041</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/568041</guid><dc:creator><![CDATA[Herrmann]]></dc:creator><pubDate>Sun, 25 Jul 2004 18:53:35 GMT</pubDate></item><item><title><![CDATA[Reply to GetLogicalDrives gibt keine Systempartition zurück? on Sun, 25 Jul 2004 19:59:08 GMT]]></title><description><![CDATA[<p>sorry, ich habe das problem mit anschalten meines gehirns lösen können:</p>
<pre><code>int _tmain(int argc, TCHAR* argv[], TCHAR* envp[]) {
	DWORD driveBitVec;
	TCHAR driveLetters[105];	// 26 letters * (3 volume letters + 1 0-Terminator)
	int counter = 0;
	TCHAR *driveLetter;

	driveBitVec = GetLogicalDrives();
	GetLogicalDriveStrings(105, driveLetters);

	for (int i = 0, j = 1; i &lt; 26; i++, j *= 2) {	// A to Z (26 letters) -&gt; 26 volumes max.
		if(driveBitVec &amp; j) {
			driveLetter = &amp;driveLetters[counter*4];
			++counter;
			if (GetDriveType(driveLetter) == DRIVE_REMOVABLE) {
				printf(&quot;Folgenden Wechseldatenträger gefunden: %s\n&quot;, driveLetter);
			}
		}

	}
	return 0;
}
</code></pre>
<p>mein ziel ist eigentlich produktdaten über drives auszugeben, z.b. hersteller, produktname, versionsnummer und seriennummer. wie kann ich das erreichen? die funktion DeviceIoControl scheint dafür notwendig, zusammen mit dem control code IOCTL_CHANGER_GET_PRODUCT_DATA. doch dafür müßte ich wieder die strings, die die drive namen beinhalten, anpassen. gibt es einen einfacheren weg?</p>
<p>außerdem gibt die CHANGER_PRODUCT_DATA struct nur byte arrays zurück, keine strings, wie sie in der hardware konfiguration von windows angezeigt werden. wie bekommt man die strings?</p>
<p>danke,</p>
<p>wan-hi</p>
]]></description><link>https://www.c-plusplus.net/forum/post/568079</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/568079</guid><dc:creator><![CDATA[Wan-Hi]]></dc:creator><pubDate>Sun, 25 Jul 2004 19:59:08 GMT</pubDate></item><item><title><![CDATA[Reply to GetLogicalDrives gibt keine Systempartition zurück? on Tue, 27 Jul 2004 08:58:21 GMT]]></title><description><![CDATA[<p>Wo ist das Problem bei DeviceIoControl mit IOCTL_CHANGER_GET_PRODUCT_DATA <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="😕"
    /><br />
Vielleicht hilft dir <a href="http://msdn.microsoft.com/library/en-us/devio/base/calling_deviceiocontrol.asp" rel="nofollow">das hier</a> weiter?! <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>Weitere Infos kannst du evtl. noch mit der WMI-Klasse &quot;<a href="http://msdn.microsoft.com/library/en-us/wmisdk/wmi/win32_diskdrive.asp" rel="nofollow">Win32_DiskDrive</a> bekommen <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f576.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--sunglasses"
      title=":sunglasses:"
      alt="🕶"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/569213</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/569213</guid><dc:creator><![CDATA[flenders]]></dc:creator><pubDate>Tue, 27 Jul 2004 08:58:21 GMT</pubDate></item><item><title><![CDATA[Reply to GetLogicalDrives gibt keine Systempartition zurück? on Tue, 27 Jul 2004 21:33:39 GMT]]></title><description><![CDATA[<p>vielen dank für die hilfe. leider bin ich noch nicht so weit mit wmi zu arbeiten, da ich gerade erst mit win32 angefangen habe und ehrlich gesagt, so gut wie keine ahnung über com habe, was laut wmi text aber wichtig ist.</p>
<p>mein eigentliches ziel ist es eigentlich alle angeschlossenen mass storage devices (usb wechseldatenträger) zu ermitteln und ihre volumes zu enumerieren, zusätzlich dazu noch devicenamen als strings auszugeben.</p>
<p>wäre es einfacher über direkte usb enumeration zu gehen? also direkt alle usb devices zu enumerieren? mein eigentlicher weg war:</p>
<ol>
<li><strong>SetupDiGetClassDevs</strong>: DeviceInfoSet über alle geräte holen, die unter die interface class &quot;Storage Device&quot; fallen</li>
<li><strong>SetupDiEnumDeviceInfo</strong> und <strong>SetupDiEnumDeviceInterfaces</strong>: von jedem erhaltenen device, sein interface enumerieren</li>
<li><strong>SetupDiGetDeviceInterfaceDetail</strong>: von jedem interface details zu beziehen</li>
<li><strong>CreateFile</strong> / <strong>IOCTL_STORAGE_GET_MEDIA_TYPES_EX</strong>: über jedes spezielle interface detail jedes device anzusprechen</li>
<li>wenn der media type nicht <strong>FILE_DEVICE_MASS_STORAGE</strong> ist, dann verwerfen.</li>
<li>wenn doch, dann von dem device seine volumes enumerieren (noch k.a. wie das gehen soll)</li>
</ol>
<p>aber das scheint alles echt umständlich. außerdem spreche ich mit der o.g. methode ein device eventuell mehrmals an, da ein device ja mehrere interfaces haben kann. geht das alles auch einfacher? ich will kein spezielles device finden, sondern einfach nur alle mass storage devices und ihre volumes.</p>
<p>hoffentlich kann mir jemand helfen.</p>
<p>gruß</p>
<p>wan-hi</p>
]]></description><link>https://www.c-plusplus.net/forum/post/569910</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/569910</guid><dc:creator><![CDATA[Wan-Hi]]></dc:creator><pubDate>Tue, 27 Jul 2004 21:33:39 GMT</pubDate></item><item><title><![CDATA[Reply to GetLogicalDrives gibt keine Systempartition zurück? on Wed, 28 Jul 2004 11:50:44 GMT]]></title><description><![CDATA[<p>Vielleicht hilft dir FindFirstVolume weiter?!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/570285</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/570285</guid><dc:creator><![CDATA[flenders]]></dc:creator><pubDate>Wed, 28 Jul 2004 11:50:44 GMT</pubDate></item><item><title><![CDATA[Reply to GetLogicalDrives gibt keine Systempartition zurück? on Wed, 28 Jul 2004 19:25:21 GMT]]></title><description><![CDATA[<p>wenn ich wüßte, wie ich anhand von rootpathnames hardware daten beziehen könnte, wäre es sicher leichter. nur wie? <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/570540</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/570540</guid><dc:creator><![CDATA[Wan-Hi]]></dc:creator><pubDate>Wed, 28 Jul 2004 19:25:21 GMT</pubDate></item></channel></rss>