Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Pfad einer gemappten Partition? (https://www.delphipraxis.net/136082-pfad-einer-gemappten-partition.html)

himitsu 23. Jun 2009 13:03

Re: Pfad einer gemappten Partition?
 
Es gibt auch Funktionen, welches die Volumes direkt auflisten.

alles Andere geht ja darüber, daß die gemappten Laufwerke und Pfade gesucht werden und dann darüber auf das Volume zugegriffen wird, also eigentlich von hinten rum.

Mattze 23. Jun 2009 16:29

Re: Pfad einer gemappten Partition?
 
Hallo,

und genau das ist das Problem.
Woher weiß ich, dass ein Volume gemappt ist und wie kriege ich das Volume zum Überprüfen überhaupt, wenn nicht über die LogicalDriveList?

Es wird wohl an einer Funktion hängen, die die Volumes direkt auflisten.
Ich vermute, dass das im DDK beschrieben ist. Und da ich das DDK nicht habe, ist das garantiert eine fürchterliche Sucherei.

Ein Glück, dass das nur ein Test ist und nichts wichtiges!
Ich habe mich schon immer gefragt, wie das eigentlich funktioniert mit der Zuordnung von physikalischen und logischen Laufwerkeigenschaften. (Ohne WMI!)
Jetzt suche ich eben...

Gruß
Mattze

himitsu 24. Jun 2009 07:27

Re: Pfad einer gemappten Partition?
 
Du willst jetzt bestimmt nicht wirklich wissen, wie einfach man Volumes sucht?













Ich warne dich ... du wirst vor Scharm im Boden versinken. :lol:













Na gut, du hast es so gewollt:













MSDN-Library durchsuchenFindFirstVolume, MSDN-Library durchsuchenFindNextVolume und MSDN-Library durchsuchenFindVolumeClose


OK, ich Schäm mich ja mit, dafür, daß ich vergessen hatte, wie es ging.
Und Tschuldschung, aber ich konnt grad nicht anders :lol:

Mattze 24. Jun 2009 13:12

Re: Pfad einer gemappten Partition?
 
NEIIIN,

das darf doch nicht wahr sein.
Und ich habe mich in der Programmierung wirklich nicht für ganz blöd gehalten!!!
Ich wollte gerade jammern, dass ich nix dazu finde!

Man, man, man, wie kann man nur so blöd sein. Dabei weiß ich das, weil ich es mal gemacht habe.

"Kennst Du den Vornamen von Alzheimer? Nein? Siehst Du, so fängt es an!!!" ;-)

Entschuldigung, aber Sch...!!! Ich ärgere mich wirklich!!!
Das war doch wohl das erste, was man hätte probieren müssen!!!

Aber danke, da wäre ich nie drauf gekommen! ;-)
Manchmal ist man wirklich einfach vernagelt. Da sieht man den Wald vor lauter Bäumen nicht.

Gruß
Mattze

Mattze 25. Jun 2009 09:33

Re: Pfad einer gemappten Partition?
 
Hallo,

interessant. Der Kreis schließt sich. Ich bin jetzt wieder bei meiner Ausgangsfragestellung angelangt.
Also entweder habe ich alles bisher richtig gemacht oder grundsätzlich falsch.
Meine Frage war: Wie stellt Windows (XP) den Zusammenhang zwischen physischen Laufwerken und logischen Volumes her?
(Ich programmiere zwar schon ein Weilchen, aber diese Frage ist irgendwie nie aufgetaucht. Jetzt mache ich es auch nur, weil es mich selber mal interessiert.)

Solange die Volumes einen Driveletter haben, gibt es da keine Probleme. (Die partitionnumber aus deviceIOcontrol scheint die Position in der Drivelist - getlogicaldrives(strings) - anzugeben.)
Aber nun, wenn das Volume keinen Driveletter hat, sondern "nur" gemappt ist...

Nun, schaun mer mal...

Gruß
Mattze

PS: Das war nur, um mal zu verdeutlichen, worum es mir eigentlich geht.

himitsu 25. Jun 2009 19:05

Re: Pfad einer gemappten Partition?
 
Also unter DOS konnta man noch beim BIOS über eine Nummer das Laufwerk ansprechen, wobei die Nummerierung entsprechend der Buchstaben ansprechen.

Bei Windows gibt es intern erstmal diese Volume-Bezeichnungen, wie sie von FindFirstVolume geliefert werden und dann sind z.B. ein Laufverksbuchstabe bzw. so ein Mountpath mit diesen Volumebezeichnungen, denn zum Ansteuern braucht man ja eine "feste" Bezeichnung (diese Volume-Bezeichnung), weil sich Laufwerksbuchstaben und Mountpaths ja ändern können.

Mattze 26. Jun 2009 12:56

Re: Pfad einer gemappten Partition?
 
Hallo,

mit deviceIOcontrol geht da erstaunlich viel.
Mit dem Parameter IOCTL_SCSI_PASS_THROUGH_DIRECT, IOCTL_SCSI_GET_ADDRESS und IOCTL_DISK_GET_DRIVE_GEOMETRY habe ich schon eine ganze Menge über die physischen Laufwerke rausbekommen. (Für HD, ext. HD, USB-Sticks, CD-LW. Ob's da noch mehr sinnvolle Sachen gibt?)

Das Problem ist nur das CreateFile bzw. was man da alles als ersten Parameter angeben kann.
z. B.: '\\.\PHYSICALDRIVE[n]', '\\.\CDROM[m]','\?\Volume{...}' (Tatsächlich!). (n=0..9, m=0..?,
und das 3. ist wirklich der Name aus FindFirstVolume usw.)
Ich suche die Angabe für Floppy. Gibt es da was? Und kennst Du sonste noch was dafür? (Ich meine nur für physische Geräte oder eben Volumes.)

Wenn man '\?\Volume{...}' nimmt, kann man sogar mit IOCTL_STORAGE_GET_DEVICE_NUMBER das zugehörige physische Gerät und die Partitionnumber rauskriegen.

Momentan bin ich noch nicht sicher, aber es läuft wohl alles (wie so oft) darauf hinaus, womit man anfängt, was die Wurzel ist. Es scheint, dass man am besten die MountedVolumes nimmt, die man mit FindFirstVolume usw. bekommt. Parallel eine Liste der physischen Laufwerke und das alles zusammenbringen. Mal sehen, wie ich damit zurecht komme...

Gruß
Mattze

Mattze 1. Jul 2009 10:02

Re: Pfad einer gemappten Partition?
 
Hallo,

ich wollte nur mal den Erfolg melden.
Jetzt funktioniert es!

Dabei ist mir etwas Interessantes aufgefallen:
Wahrscheinlich überall, wo man einen "RootPath" oder ähnliches angeben soll, funktioniert auch der
VolumeMountName ('\\?\Volume{GUID}' - ich weiß jetzt nicht mehr, ob hinten ein Backslash ran muss.)
Ich habe das für CreateFile und GetDiskFreespaceEx ausprobiert. Ohne Probleme!!!

Gruß
Mattze


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:54 Uhr.
Seite 2 von 2     12   

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz