AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

VolumeMountPoints

Ein Thema von Neutral General · begonnen am 5. Mär 2007 · letzter Beitrag vom 28. Apr 2014
Antwort Antwort
Seite 2 von 2     12   
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#11

Re: VolumeMountPoints

  Alt 8. Mär 2007, 15:35
Zitat von himitsu:
MSDN-Library durchsuchenQueryDosDevice ... nimm das doch endlich mal
Damit kannst du sowas machen, wie auch mit dem "DOS-Befehl" SUBST
Vielleicht stell ich mich ja blöd an aber jetzt hab ich QueryDosDevice ausgeführt und zurück bekomme ich sowas wie

Zitat:
\Device\HarddiskVolume8
Und was mach ich jetzt damit ? :X

Gruß
Neutral General
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.119 Beiträge
 
Delphi 12 Athens
 
#12

Re: VolumeMountPoints

  Alt 10. Mär 2007, 18:43
Upss ja, ich meinte eigentlich MSDN-Library durchsuchenDefineDosDevice ... auf welches übrigens bei MSDN-Library durchsuchenQueryDosDevice verlinkt wird.

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
hier 'ne nette BatchFile (test.bat):
Code:
subst4nt.exe L: C:\Programme
pause
subst4nt.exe L: -r
pause
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#13

Re: VolumeMountPoints

  Alt 11. Mär 2007, 12:04
Hi,

Delphi-Quellcode:
// verbinden
DefineDosDevice(DDD_RAW_TARGET_PATH, 'L:', '\??\C:\Programme');

// trennen
DefineDosDevice(DDD_REMOVE_DEFINITION, 'L:', nil);
... Das einzige was mir immer gefehlt hat war '\??\' vor dem eigentlichen Pfad... Ich hab mich auch tot-gegoogelt und NIRGENDWO stand das so

Aber danke

Gruß
Neutral General
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.119 Beiträge
 
Delphi 12 Athens
 
#14

Re: VolumeMountPoints

  Alt 11. Mär 2007, 15:12
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
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
davtix

Registriert seit: 29. Mai 2003
Ort: Berlin
87 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#15

AW: VolumeMountPoints

  Alt 28. Apr 2014, 16:15
Hi,

Ich verzweifel noch. Kann mir jemand eindeutig erklären wie ich MSDN-Library durchsuchenSetVolumeMountPoint aufrufe?
Bei MSDN steht zwar ein Beispiel aber sonst stehts im Internet immer anders. Klappen tut beides nicht.

Delphi-Quellcode:
SetVolumeMountPoint('W:\','\C:\Test\') // oder
SetVolumeMountPoint('\C:\Test\','W:\')
GetLastError:

Zitat:
Falscher Parameter.
Delphi-Quellcode:
SetVolumeMountPoint('W:\','\C:\Test') // oder
SetVolumeMountPoint('\C:\Test','W:\')
GetLastError:

Zitat:
Die Syntax für den Dateinamen, Verzeichnisnamen oder die Datenträgerbezeichnung ist falsch

Delphi-Quellcode:
GetVolumeNameForVolumeMountPoint(PChar('C:\\'),@Buffer[0],SizeOf(Buffer));
SetVolumeMountPoint('\C:\Test\',Buffer)
Delphi-Quellcode:
GetVolumeNameForVolumeMountPoint(PChar('C:\\'),@Buffer[0],SizeOf(Buffer));
SetVolumeMountPoint(Buffer,'\C:\Test\')
GetLastError:

Zitat:
Das Verzeichnis ist nicht leer.
Und wie das leer ist! -.-

In Buffer steht immer sowas (oder so ähnlich halt):

\\?\Volume{dafc6733-ff88-11d9-b411-806d6172696f}\ Was is da jetzt noch falsch dran ?-.-

Gruß
Neutral General

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.dllname '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;
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#16

AW: VolumeMountPoints

  Alt 28. Apr 2014, 16:28
Hallo,

Habs grad ausprobiert und bei mir gehts so:

Delphi-Quellcode:
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;
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.
Daher hat Windows versucht in nicht angeforderten Speicher zu schreiben, was mit einer Exception geendet hat.
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."

Geändert von Neutral General (28. Apr 2014 um 16:37 Uhr)
  Mit Zitat antworten Zitat
davtix

Registriert seit: 29. Mai 2003
Ort: Berlin
87 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#17

AW: VolumeMountPoints

  Alt 28. Apr 2014, 16:36
ein RIESIGEN DANK AN DICH... endlich , hab seit 5 tagen probiert und gelesen.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:39 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz