![]() |
PhysicalDriveX - Was versteckt sich eigentlich dahinter?
Tja :oops:
Ehrlich gesagt, bin ich mir beim Titel nicht so sicher. Es geht sich strenggenommen um folgendes: Ich schreibe eine Anwendung, die Festplatteninformationen auslesen soll. Ich habe mir dazu Luckies HDDInfo.pas angesehen, und habe festgestellt, dass er es sich recht einfach gemacht hat:
Delphi-Quellcode:
So wird die Anzahl der Festplatten ermittelt. Und die DiskGeometry wird so ermittelt:
procedure THDDInfo.GetHDDsCount;
var i : Integer; Device : string; hDevice : Cardinal; begin for i := 0 to 9 do begin Device := '\\.\PhysicalDrive' + IntToStr(i); hDevice := CreateFile(pointer(Device), 0, FILE_SHARE_READ or FILE_SHARE_WRITE, nil, OPEN_EXISTING, 0, 0); if hDevice <> INVALID_HANDLE_VALUE then Inc(FHDDsCount); end; end;
Delphi-Quellcode:
Daraus schließe ich, dass es sich bei "PhysicalDriveX" immer um "FixedMedia" handeln muss. Stimmt das? Wenn nicht, dann hat Luckies Code imho diesen Denkfehler drin...
procedure THDDInfo.GetDiskGeometry;
var i : Integer; Device : string; hDevice : Cardinal; dg : DISK_GEOMETRY; dummy : DWORD; begin setlength(FCylinders, FHDDsCount); setlength(FTracksPercylinder, FHDDsCount); setlength(FSectorsPerTrack, FHDDsCount); setlength(FBytesPerSector, FHDDsCount); for i := 0 to FHDDsCount - 1 do begin Device := '\\.\PhysicalDrive' + IntToStr(i); hDevice := CreateFile(pointer(Device), 0, FILE_SHARE_READ or FILE_SHARE_WRITE, nil, OPEN_EXISTING, 0, 0); if hDevice <> INVALID_HANDLE_VALUE then begin if DeviceIOControl(hDevice, IOCTL_DISK_GET_DRIVE_GEOMETRY, nil, 0, @dg, sizeof(dg), dummy, nil) = true then begin FCylinders[i] := dg.Cylinders.QuadPart; FTracksPerCylinder[i] := dg.TracksPerCylinder; FSectorsPerTrack[i] := dg.SectorsPerTrack; FBytesPerSector[i] := dg.BytesPerSector; end else begin FCylinders[i] := 0; FTracksPerCylinder[i] := 0; FSectorsPerTrack[i] := 0; FBytesPerSector[i] := 0; end; end; CloseHandle(hDevice); end; end; |
Re: PhysicalDriveX - Was versteckt sich eigentlich dahinter?
Die PhysicalDrive Ports sind dazu da, um "physisch" auf Festplatten zu schreiben, davon zu lesen oder halt Informationen über die Medien zu ermitteln. Auf fixed Media beschränkt sind diese Zugriffe allerdings nicht. Z.B. meine Externe Festplatte (USB) kann ich ohne weiteres auch per PhysicalDrive ansprechen.
|
Re: PhysicalDriveX - Was versteckt sich eigentlich dahinter?
Zitat:
PhysicalDrive0 - Festplatte 1 PhysicalDrive1 - Festplatte 2 PhysicalDrive2 - DVD-Brenner PhysicalDrive3 - Festplatte 3 |
Re: PhysicalDriveX - Was versteckt sich eigentlich dahinter?
Nein, das ist nicht möglich. Nach meiner Erfahrung können nur Festplatten so angesprochen werden (Hierbei ist es aber egal, ob diese fest verbaut sind, oder extern angeschlossen wurden). Ob auf USB Sticks oder sonstige festplattenähnlichen Speichermedien auch auf diese Weise zugegriffen werden kann, weiß ich nicht.
|
Re: PhysicalDriveX - Was versteckt sich eigentlich dahinter?
Hm, ok. Ich denke, ich werden dann die Laufwerksnummer zusätzlich mit in meiner Struktur speichern und im Vorfeld prüfen, ob das Laufwerk SMART-fähig ist und ansonsten verwerfen.
Danke. ;) P.S.: Hab grad ne SD-Karte in den internen Card Reader geschoben. Sie ist zumindest über PhysicalDrive ansprechbar... :| |
Re: PhysicalDriveX - Was versteckt sich eigentlich dahinter?
Das meinte ich mit "festplatten-ähnliche" Medien :) Sowas wie DVD Laufwerke / Brenner wirst du nicht ansprechen können. USB Sticks, MemoryCards, etc dann wohl schon. Dazu kannst du aber auch per
![]() |
Re: PhysicalDriveX - Was versteckt sich eigentlich dahinter?
Ich weiß nicht, ob das alles noch seine Gültigkeit hat (Vista, Win7), aber in der Code-Library gibt es einen ganz netten Eintrag zu dem Thema:
![]() Grüße, Matze |
Re: PhysicalDriveX - Was versteckt sich eigentlich dahinter?
Hey ihr zwei,
Danke nochmal. ;) Da für mich eh nur Laufwerke interessant sind, die S.M.A.R.T. unterstützen, filter ich sie nach diesem Kriterium. :) |
Re: PhysicalDriveX - Was versteckt sich eigentlich dahinter?
Zitat:
|
Re: PhysicalDriveX - Was versteckt sich eigentlich dahinter?
Zitat:
inkl. Speicherkarten inkl. USB-Sticks exkl. DVD/CD exkl. DAT-Streamer exkl. Disketten also fast alles, welches sich wie eine Festplatte ansteuern läßt |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:48 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