AGB  ·  Datenschutz  ·  Impressum  







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

Festplatte /CD-Rom ohne Volumeid?

Ein Thema von p80286 · begonnen am 5. Aug 2011 · letzter Beitrag vom 8. Aug 2011
Antwort Antwort
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#1

Festplatte /CD-Rom ohne Volumeid?

  Alt 5. Aug 2011, 17:25
Hallo zusammen,

beim Versuch den Namen einer CD (DISK1) und einer Festplatte (SYSTEM) mit Hilfe von Findfirst/FindNext/Findclose [faAnyFile / if attrib and faVolumeID>0) auszulesen bin ich kläglich gescheitert. Auf die Protokollierung aller Dateien auf der Festplatte/CD ergab keine Datei mit dem Attrib faVolumeid (0x0008).
Kann mir jemand sagen was ich falsch gemacht habe?

Ach ja ich arbeite unter XP. Als "Normalbenutzer"

(zu DOS-Zeiten gab es soetwas noch)

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#2

AW: Festplatte /CD-Rom ohne Volumeid?

  Alt 5. Aug 2011, 17:30
Kann mir jemand sagen was ich falsch gemacht habe?
Und wie sollen wir das machen ohne deinen Code zu sehen? Seit ich wieder eine Freundin habe, sind meine telepathischen Kräfte etwas geschwächt von der Dauernutzung.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Festplatte /CD-Rom ohne Volumeid?

  Alt 5. Aug 2011, 18:45
DOS ist lange vorbei ... in NT gibt es das nicht mehr.
http://msdn.microsoft.com/en-us/library/gg258117.aspx

NTFS speichert das vermutlich wo anders,
auch CDFS speichert das nicht im Dateisystem,
also wohl nur im alten FAT war es dort zu finden.

http://msdn.microsoft.com/en-us/library/aa364407.aspx
Tipp:
> Du suchst Informationen zu einem Volume

http://msdn.microsoft.com/en-us/library/aa364993.aspx

PS: Der Volume-Friendly-Name steht nicht unbedingt auf dem Datenträger, denn Windows kann den (im Explorer) angezeigen Namen auch irgendwo in der Regisrty speichern ... hab ich vorallem in Verbindung mit CD-Laufwerken (ohne CD) und bei Speicherkarten erlebt.
Dort kommt man notfalls über WMI ran, falls die genannte API nicht reicht.


Zitat:
Auf die Protokollierung aller Dateien auf der Festplatte/CD
Und selbst wenn du es im Dateisystem findest, dann natürlich nur im Root-Verzeichnis.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu ( 5. Aug 2011 um 18:51 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#4

AW: Festplatte /CD-Rom ohne Volumeid?

  Alt 5. Aug 2011, 21:58
..also wohl nur im alten FAT war es dort zu finden.
So war das

http://msdn.microsoft.com/en-us/library/aa364993.aspx

PS: Der Volume-Friendly-Name steht nicht unbedingt auf dem Datenträger, denn Windows kann den (im Explorer) angezeigen Namen auch irgendwo in der Regisrty speichern ... hab ich vorallem in Verbindung mit CD-Laufwerken (ohne CD) und bei Speicherkarten erlebt.
Dort kommt man notfalls über WMI ran, falls die genannte API nicht reicht.
Das Sieht erfolgversprechend aus, vielen Dank.

Und wie sollen wir das machen ohne deinen Code zu sehen? Seit ich wieder eine Freundin habe, sind meine telepathischen Kräfte etwas geschwächt von der Dauernutzung.
Alles eine Frage des Trainings

Ich war davon ausgegangen, daß mein Hinweis auf Findfirst... ausreichend war.

Bei CDs könnte die TOC noch eine Quelle sein.

Vielen Dank!

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
samso

Registriert seit: 29. Mär 2009
439 Beiträge
 
#5

AW: Festplatte /CD-Rom ohne Volumeid?

  Alt 6. Aug 2011, 11:36
Vielleicht ist das hier, dass was Du suchst
Delphi-Quellcode:
function VolumeId(const Drive: String): string;
var
  OldErrorMode: Integer;
  NotUsed, VolFlags: Cardinal;
  Buf: array [0..MAX_PATH] of Char;
begin
  OldErrorMode := SetErrorMode(SEM_FAILCRITICALERRORS);
  try
    Buf[0] := #0;
    if GetVolumeInformation(PChar(Drive), Buf, sizeof(Buf), nil, NotUsed, VolFlags, nil, 0)
    then
      SetString(Result, Buf, StrLen(Buf))
    else
      Result := '';
  finally
    SetErrorMode(OldErrorMode);
  end;
end;
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Festplatte /CD-Rom ohne Volumeid?

  Alt 6. Aug 2011, 12:59
Zitat:
SizeOf(Buf)
Man beachte unbedingt die Beschreibung für nVolumeNameSize

MSDN-Library durchsuchenGetVolumeInformation
Zitat:
The length of a volume name buffer, in TCHARs
TCHAR wurde im MSDN nicht umsonst fett geschrieben.
Also Length und nicht SizeOf.


Genau durch solche Fehler entstehen die meisten vProbleme mit den APIs.
- Entweder funktioniert der Code dann nicht, durch einen vermeintlich zu kleine Buffer,
- oder es gibt ganz besonders schöne Speicherüberläufe, da der Buffer größer angegeben wird, als er wirklich ist.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu ( 6. Aug 2011 um 13:02 Uhr)
  Mit Zitat antworten Zitat
samso

Registriert seit: 29. Mär 2009
439 Beiträge
 
#7

AW: Festplatte /CD-Rom ohne Volumeid?

  Alt 6. Aug 2011, 14:09
Aja, danke! Ich habe meine Bibliotheken immer noch nicht komplett auf Unicode umgestellt.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Festplatte /CD-Rom ohne Volumeid?

  Alt 6. Aug 2011, 14:32
Wobei es ja eigentlich schon zu Ansi-Zeiten "falsch" war, auch wenn es zufällig funktioniert.
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 p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#9

AW: Festplatte /CD-Rom ohne Volumeid?

  Alt 8. Aug 2011, 10:03
Vielen Dank für Eure Hinweise. Das hier ist jetzt dabei heraus gekommen:
Delphi-Quellcode:
function GetVolName(Drive:char;out VolSerialNo,FileSystemName:ansistring):ansistring;
var
  DrivePath : Ansistring;
  MaximumComponentLength : DWORD;
  FileSystemFlags : DWORD;
  VolumeSerialNo : DWORD;
  buffer1 : array [0..MAX_PATH] of ansichar;
  buffer2 : array [0..MAX_PATH] of ansichar;
  PVolName : PChar;
  VolumeName : Ansistring;
  VolumeNameLength : integer;
begin
  Result := '';
  DrivePath := Drive + ':\';
  fillchar(buffer1,Sizeof(buffer1),' ');
  fillchar(buffer2,Sizeof(buffer2),' ');
  GetVolumeInformation(PChar(DrivePath),
                       PChar(@buffer1[0]),
                       Length(buffer1),
                       @VolumeSerialNo,
                       MaximumComponentLength,
                       FileSystemFlags,
                       PChar(@buffer2[0]),
                       Length(buffer2));
  Result:=buffer1;
  VolSerialNo:=inttostr(VolumeSerialNo);
  FileSystemName:=buffer2;
end;
Unter XP/D7 funktioniert es.

Ich habe übrigens keinen Datenträger mehr gefunden, der mit FindFirst und faVolumeID noch ein Ergebnis brachte (Disketten hab ich keine mehr)

vielen Dank nochmal!
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Antwort Antwort


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 03:53 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