Okay ein
s ist schuld
Ich habe den Code mal ein wenig geändert.
Was mich verwirrt ist die Tatsache das mit einem Laufwerksbuchstaben geht und mit einer
GUID nicht
Delphi-Quellcode:
procedure SplitVolumeNames(aVolume : Array of Char; var aVolumeRec : TVolumeRec);
var
BufferLength,
ReturnLength : DWORD;
VolumePathNames : TCharArray;
begin
BufferLength := MAX_PATH + 1;
aVolumeRec.VolumeStr := Copy(aVolume, 1, BufferLength);
FillChar(VolumePathNames, SizeOf(TCharArray), #0);
if GetVolumePathNamesForVolumeName(aVolume, VolumePathNames, BufferLength, ReturnLength) then
aVolumeRec.PathStr := StrPas(VolumePathNames);
FillChar(VolumePathNames, SizeOf(TCharArray), #0);
if (QueryDosDevice(PChar(Copy(aVolumeRec.PathStr, 1, 2)), VolumePathNames, BufferLength) > 0) then
aVolumeRec.DeviceStr := VolumePathNames
else
ErrorDesc(GetLastError);
end;
aVolumeRec.PathStr = 'E:\' liefert das richtige Ergebnis:
'\Device\HarddiskVolume1'.
Übergebe ich jedoch die passende GIUD: '\\?\Volume{5bc8c923-ba57-11de-b195-005056c00008}\'; Kommt
die Fehlermeldung: Der angegebene Pfadname ist ungültig.
Kann mir einer sagen warum das so ist, habe ich etwas übersehen?
Danke