vorhandene Laufwerke ermitteln?!

Ravebaby

Erfahrenes Mitglied
Ich möchte gerne alle vorhandenen Laufwerke eines Rechners mit einer Funktion ermitteln können. Ziel ist es, in einem FileExplorer alle möglichen Einstiegspunkte auf der "obersten Ebene" anzeigen lassen zu können. Falls es solch eine Funktion gibt, kann man dann auch zwischen "normalen" Datenpartitionen und Netzwerklaufwerken und Co unterscheiden?! Denn ich denke, dass mein geschriebener Code für den File Explorer nur für c:\Programme und d:\Daten funktioniert. Wohl nicht aber für Netzwerklaufwerke oder CD - Laufwerke oder sonstiges...
Vielen Dank für jede Hilfe :)
 
Ich habe leider immer noch keine Lösung für dieses Problem gefunden. Weiß niemand etwas zu diesem Thema?! Ich habe schon unter allen möglichen Stichpunkten bei Google gesucht, aber irgendwie ist es ja auch sehr schwer einen passenden Suchbegriff zu finden...
 
moin


Ich hab hier mal ein Beispiel aus der MSDN:
Code:
#include <windows.h>
#include <direct.h>
#include <stdio.h>
#include <tchar.h>

TCHAR g_szDrvMsg[] = _T("\tA:\n");

int main(int argc, char* argv[]) {
	ULONG uDriveMask = _getdrives();

	if (uDriveMask == 0)
		printf("_getdrives() failed with failure code: %d\n", GetLastError());
	else {
		printf("The following logical drives are being used:\n");

		while (uDriveMask) {
			if (uDriveMask & 1)
				printf(g_szDrvMsg);

			++g_szDrvMsg[1];
			uDriveMask >>= 1;
		}
	}


mfg
umbrasaxum
 
moin


Hab eben noch ein Beispiel gefunden:
Code:
#include <windows.h>
#include <tchar.h>
#include <shlwapi.h>
#include <stdio.h>

#ifndef BITSPERBYTE
#define BITSPERBYTE 8
#endif

#define IS_BIT(val, bit) ((val) & (1 << (bit)))

int _tmain(void)
{
   DWORD dwLogicalDrives, x;
   TCHAR szRoot[32];

   dwLogicalDrives = GetLogicalDrives();

   for(x = 0; x < (sizeof(dwLogicalDrives) * BITSPERBYTE); x++)
   {
      if(IS_BIT(dwLogicalDrives, x))
      {
         PathBuildRoot(szRoot, x);
         _tprintf(TEXT("%s - DriveType: 0x%08X\n"), szRoot, GetDriveType(szRoot));
      }
   }
   return(0);
}


mfg
umbrasaxum
 
vielen Dank. Allerdings hab ich es nun eingebaut und er gibt einfach nichts aus...
Sucht er nur nach den im Moment verwendeten Laufwerken, weil da ja steht: "The following logical drives are being used" oder wirklich nach allen, die auf dem Rechner aufzutreiben sind. Denn warum beginnt er denn mit "A:\" ?
Ich verstehs leider nicht so ganz... :confused:
 
shit, mein Fehler. Hatte vergessen printf in TRACE umzuwandeln. Klar erscheint da nichts... ;)
Also vielen Dank
 
Zuletzt bearbeitet:
Zurück