![]() |
Re: VolumeMountPoints
Zitat:
Zitat:
Gruß Neutral General |
Re: VolumeMountPoints
Upss ja, ich meinte eigentlich
![]() ![]() C:\Programme\ als L:\ "mounten":
Delphi-Quellcode:
// verbinden
DefineDosDevice(DDD_RAW_TARGET_PATH, 'L:', '\??\C:\Programme'); // trennen DefineDosDevice(DDD_REMOVE_DEFINITION, 'L:', nil); kannt es ja mal bei Olli testen :angel: hier 'ne nette BatchFile (test.bat):
Code:
subst4nt.exe L: C:\Programme
pause subst4nt.exe L: -r pause |
Re: VolumeMountPoints
Hi,
Delphi-Quellcode:
... Das einzige was mir immer gefehlt hat war '\??\' vor dem eigentlichen Pfad... Ich hab mich auch tot-gegoogelt und NIRGENDWO stand das so :roll:
// verbinden
DefineDosDevice(DDD_RAW_TARGET_PATH, 'L:', '\??\C:\Programme'); // trennen DefineDosDevice(DDD_REMOVE_DEFINITION, 'L:', nil); Aber danke :) Gruß Neutral General |
Re: VolumeMountPoints
keine Sorge ... diese Variante kannte ich vor Olli's Tool auch noch nicht ... halt nur die UNC-Varianten ( \\.\ und \\?\ ) ^^
und im MSDN/PSDK is mir sowas demnach auch noch nicht untergekommen :shock: |
AW: VolumeMountPoints
Zitat:
hi Neutral General , hast du nu rausgefunden wie du die GUID herrausbekommst??? bei mir kommt immer ne fehlermeldung der ntdll.dll.
Delphi-Quellcode:
Function GetVolumeNameForVolumeMountPoint(
lpszVolumeMountPoint: PAnsiChar; lpszVolumeName: PAnsiChar; cchBufferLength: DWORD): Boolean; stdcall; external 'C:\Windows\SysWOW64\kernel32.dll' name 'GetVolumeNameForVolumeMountPointA';
Delphi-Quellcode:
procedure TForm1.Button21Click(Sender: TObject);
var vmp : PAnsiChar; vn : PAnsiChar; i : cardinal; begin vmp := ('D:\\'); //GetVolumeNameForVolumeMountPoint(vmp, vn, i); GetVolumeNameForVolumeMountPoint(vmp,vn, i); // GetVolumeNameForVolumeMountPoint(PChar('C:\\'),@Buffer[0],SizeOf(Buffer)); ListBox2.Items.Add( string( vn)); end; |
AW: VolumeMountPoints
Hallo,
Habs grad ausprobiert und bei mir gehts so:
Delphi-Quellcode:
Der Fehler war, dass du für den Volume name Speicher bereitstellen musst. Bei mir sind es die 101 Bytes/AnsiChars des "Buffer"-Arrays. Im 3. Parameter musst du die länge des Buffers übergeben den du bereitstellst. Da hast du einfach das uninitialisierte "i" übergeben in der irgendeine beliebige Zahl drin stehen kann.
procedure TForm1.Button1Click(Sender: TObject);
var Buffer: Array[0..100] of AnsiChar; // Je nachdem wie viel du willst/kannst/sollst begin GetVolumeNameForVolumeMountPoint('D:\\',@Buffer[0], Length(Buffer)); Caption := Buffer; // \\?\Volume{6f55826c-bfa1-11e1-86d0-20cf30e33243}\ end; Daher hat Windows versucht in nicht angeforderten Speicher zu schreiben, was mit einer Exception geendet hat. |
AW: VolumeMountPoints
ein RIESIGEN DANK AN DICH... endlich , hab seit 5 tagen probiert und gelesen.
:thumb::thumb::thumb::thumb::thumb: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:22 Uhr. |
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