Einzelnen Beitrag anzeigen

Benutzerbild von mael
mael

Registriert seit: 13. Jan 2005
391 Beiträge
 
Delphi XE3 Professional
 

Re: Festplattenstress erzeugen

  Alt 29. Jan 2005, 19:43
Falls das Programm nur unter NT aufwärts laufen soll, kann man CreateFile, FileRead verwenden um direkt Sektoren auszulesen.

Damit läßt sich dann analog zu Dateien eine Reihe von aufeinanderfolgenden Sektoren auslesen.
Diese Sache sollte auch ungecacht (von der Windows-Seite her) sein, also für Performance-Messungen geeignet.
Random-Access muß halt durch möglichst unregelmäßigen Zugriff gemessen werden. Also nicht aufeinanderfolgende Daten, sondern "zufällig" verteilt.


Mit
Delphi-Quellcode:
DeviceHandle := CreateFile('\\.\PHYSICALDRIVE0', GENERIC_READ,
    FILE_SHARE_READ or FILE_SHARE_WRITE, nil, OPEN_EXISTING,
    FILE_FLAG_RANDOM_ACCESS, 0);
kann man auf die erste physische Festplatte zugreifen.

FileSeek(DeviceHandle, Position, ord(soBeginning)); Position ist die BytePosition (also nicht Sektor basiert).

FileRead(DeviceHandle, SectorBuffer^, Count); liest dann einfach Daten in einen Puffer.

Delphi-Quellcode:
DeviceIoControl(DeviceHandle, IOCTL_DISK_GET_DRIVE_GEOMETRY, nil, 0,
    @DiskGeometry, sizeof(DiskGeometry), Dummy, nil)
liefert alle wichtigen Informationen zum Aufbau der Festplatte, z.B. Bytes pro Sektor.

CloseHandle(DeviceHandle); sollte am Ende nicht vergessen werden!

Ein Paar Sachen sind zu beachten: Man kann nur an Sektorgrenzen mit dem Lesen beginnen und man braucht Administratorrechte.

Unter 9X geht das auch ist aber aufwändiger: Bin gerade dabei dafür eine DLL zu entwickeln; man muß auf BIOS-Aufrufe zurückgreifen und das geht nur von einer 16-Bit DLL oder einem Treiber (noch komplizierter und nicht in Delphi machbar) aus.

Ein Blick in die Windows-API Hilfe (MSDN) zu diesen Funktionen ist für weitere Details sicher sinnvoll.

Zur DMA Lesegeschwindigkeit:
Ich wüßte nicht wie man das machen soll, außer daß man es abstellt im Gerätemanager, wofür man (soweit ich mich erinnere) einen Neustart braucht.

Hoffe das hilft,
Gruß Maël.

P.S.: Aus Neugierde: Was ist das für ein Testprogramm?
  Mit Zitat antworten Zitat