Delphi-PRAXiS
Seite 3 von 6     123 45     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Software-Projekte der Mitglieder (https://www.delphipraxis.net/26-software-projekte-der-mitglieder/)
-   -   kleiner ProgrammCheck (Festplatten auslesen) (https://www.delphipraxis.net/72979-kleiner-programmcheck-festplatten-auslesen.html)

himitsu 21. Jul 2006 12:49

Re: kleiner ProgrammCheck (Festplatten auslesen
 
Zitat:

Zitat von static_cast
Das System ist Win2k mit *nachguck* SP4

OK, hab grad nochmal nachgeguckt...
Zitat:

Zitat von MSDN
Requires Windows Vista or Windows XP.

Muß mal sehn, ob ich das abkapseln und irgendwie anders lösen werd' ._.

Go2EITS 22. Jul 2006 06:04

Re: kleiner ProgrammCheck (Festplatten auslesen
 
@himitsu
ich habe auch Windows2000 SP4 mit allen Hotfixes.
Aber kein Absturz mit der kernel32

@Static_cast:
Welchen kernel32.dll hast Du denn?
Ich habe unter c:\WINNT\system32 eine Kernel.dll mit 751KB vom 03.06.2005

runger 22. Jul 2006 08:24

Re: kleiner ProgrammCheck (Festplatten auslesen
 
Hi

ist dein Sourcecode ein Geheimnis? Bitte häng ihn an deine exe.

rainer

himitsu 22. Jul 2006 11:33

Re: kleiner ProgrammCheck (Festplatten auslesen
 
@Go2EITS: ist schon OK, ich hab eh noch eine weitere Funktion gefunden, welche erst seit XP vorhanden sein soll (laut PSDK/MSDN) und bis ich dafür 'nen Ersatz hab, dauert es bestimmt noch etwas (muß dafür halt "vieles" über Umwege selber machen).

Na ja ... es ist schon ein Wunder, dat es überhaupt läuft ... weil eigentlich gibt es soooo schon Funktionen, welche erst in Vista eingeführt werden :roll:

@runger: im Moment würde das eh nicht viel helfen ... ich sehe da ja gerade mal so durch ... die Units sind mehr Chaotisch geordnet (deren Inhalt) und es gibt nicht einen einzigen Kommentar (bis auf einen mit den 2 Leuten/Firmen, von denen ich Codes verwendet hab.


[add]
Also dat S.M.A.R.T für die Ferstplattennamen/Seriennummer ist drin aund läuft ja anscheinend recht zuverlässig .. mit dem WMI kämpfe ich noch ... hab da zwar 'ne nette "Klasse" für gefunden, allerdings ist die ja mächtig groß (ist halt och für alles mögliche ausgelegt und nicht nur für das, was ich benötige) ... na ja, bis jetzt hab ich den QuellCode für's WMI von knapp 32 KB auf unter 10 KB reduziert und es geht noch ä bissl so weiter ^^

static_cast 22. Jul 2006 12:07

Re: kleiner ProgrammCheck (Festplatten auslesen
 
Zitat:

Zitat von Go2EITS
@Static_cast:
Welchen kernel32.dll hast Du denn?
Ich habe unter c:\WINNT\system32 eine Kernel.dll mit 751KB vom 03.06.2005

Das kann ich jetzt leider nicht mehr beantwroten, hatte das gestern auf der Arbeit getestet, nu hab ich auch Urlaub und hier ist weit und breit kein Win2k in sicht ;)

himitsu 31. Jul 2006 13:02

Re: kleiner ProgrammCheck (Festplatten auslesen
 
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:

Zitat von static_cast
Das kann ich jetzt leider nicht mehr beantwroten, hatte das gestern auf der Arbeit getestet, nu hab ich auch Urlaub und hier ist weit und breit kein Win2k in sicht ;)

Komisch ist es ja schon, weil angeblich diese Funktion erst seit XP existiert (aber vielleicht gab's die ja schon vorher mal, so als versteckte API :stupid: )



Erstmal hab ich inzwischen einiges umgestellt und erweitert (hoffe es läuft immernoch alles)
und dann hatte ich mich noch zu 'nem RAID-Testlauf überredet.



Da ich jetzt teilweise bis zu 3 Quellen für ein und den selben Wert abfrage, dauert es jetzt ein bissl länger (vorallem das WMI is ja nicht gerade schnell und das eine Sleep(500), zur Sicherheit, nachdem ich einen Rescan des IDE/SCSI-Busses veranlaßt habe, tut och noch so einiges, da es bei jeder Platte auftitt ._.), also gibt's nun 'nen Statusfenster wärenddessen.

Dann hoffe ich mal, daß jetzt endlich "alle" Informationen/Namen richtig angezeigt werden.
(hab sogar mal vorübergehend die beiden Buttons (unten rechts) mit 'ner Funktion belegt :) )

Die Infos zu den einzelnen Partitionen (Physical Drives) gibt's immernoch nicht ... konnte mich noch nicht entscheiden welche und wie ich die Werte darstelle. (es wurde aber zumindestens schonmal ein eigenes Panel dafür erstellt ^^)

Bei den Festplatten ist unter anderem das Accoustic Management hinzugekommen und auch schon funktionsfähig. (bis auf den Testlauf, aber das kläre ich in 'nem anderem Thread)
PS: obwohl mein "alte" Maxtor dieses unterstützt, auf 128 steht und wirklich recht leise läuft, läßt sie sich nicht auf Lauter stellen.
Da ich jetzt aber nicht schon beim Scannen testen will, ob sich das wirklich ändern läßt, gibt es est beim Versuch dieses zu verstellen die entsprechende Fehlermeldung.


Anschlüsse:
Bei den IDE-Geräten scheint Port dem IDE-Controler und TargetID dem Anschluß (0=First Master, 1=First Slave, 2=Second Master und 3=Second Slave) zu entsprechen?

RAID's:
siehe Fotoserie im Anhang

Da ich ja "nur" bei den Treibern und Windows nachfrage (wie man sich direkt ans BIOS wendet, weiß ich ja nicht), sehe ich auch nur das, was man mir sagt und bei Hardware-RAIDs wird der RAID als eine "Festplatte" angezeigt und nicht jede Platte einzeln.

Die Software-RAIDs (hier das von Windows ... hoffe bei anderen ist es ähnlich) werden die Platten von den Treibern einzeln angegeben, und erst dann macht Windows eine "logische" Platte daraus.
Also theoretisch könnte man bei den Software-RAIDs auch die Platten einzeln untersuchen ... und was noch praktisch ist: man kann auch den ungenutzen Platz verwenden, welches bei meinem RAID-Controler nicht möglich ist (wenn es überhaupt irgendein bezahlbarer RAID-Controler kann ... k.A.).

Beim Software RAID müssen allerdings die Platten als dynamische Plättchen eingebunden sein und bestehen somit nur aus einer großen Partition (der Dynamischen).
Was aber für ein RAID-System vorliegt wird da nicht gesagt ... bis jetzt könnte ich höchstens aus Größe der Logischen Disk und den dazugehörigen DiskExtents heraus vermuten, was und ob es einer ist (ob z.B. kein RAID, RAID 0, oder RAID 1 ... bei Sonderformen wird's schwierig).


Ach ja, immernoch ab WinXP.




in den RAIDs haben sich folgende Plättchen vergnügt:
Hardware-RAID: Seagate ST31276A und Maxtor 4K040H2
Software-RAID: Seagate ST31276A und Maxtor 6V250F0

Und wen es interessiert ... der einzige (bis jetzt) Zugriff auf irgendwelche Daten auf den Platten geschieht beim Test im Accoustic Management:
Delphi-Quellcode:
M := TAcousticManagementTestMessage.Create(Self);
Try
  SetText(M.Label2, PhysicalDrives[Di].VolumeName);
  M.Show;
  i2 := (PhysicalDrives[Di].DiskSize div PhysicalDrives[Di].BytesPerSector) div $7FFFFFFF;
  If i2 <= 0 Then i2 := 1;
  i := (PhysicalDrives[Di].DiskSize div PhysicalDrives[Di].BytesPerSector) div i2;
  SetLength(R, PhysicalDrives[Di].BytesPerSector);
  i3 := 0; i4 := 0;
  Ts := GetTickCount;
  T := Ts;
  Repeat
    Inc(i3);
    Pos.QuadPart := Int64(PhysicalDrives[Di].BytesPerSector) * (i2 * Random(i));
    SetFilePointer(Dh, Pos.LowPart, @Pos.HighPart, FILE_BEGIN);
    If ReadFile(Dh, R[0], PhysicalDrives[Di].BytesPerSector, W, nil) Then Inc(i4, W);
    If LongInt(T - GetTickCount) <= 0 Then Begin
      SetText(M.Label4, IntToStr(i3));
      SetText(M.Label6, IntToStr(i4 shr 10) + ' KB');
      T := 15 - Integer((GetTickCount - Ts) div 1000);
      If Integer(T) <= 0 Then M.Tag := 1;
      S := 'Cancel (' + IntToStr(T) + ')';
      If GetText(M.Button4) <> S Then SetText(M.Button4, S);
      Application.ProcessMessages;
      T := GetTickCount + 150;
    End;
  Until M.Tag > 0;
  SetText(M.Button4, 'Close');
  Repeat
    Sleep(50);
    Application.ProcessMessages;
  Until M.Tag > 1;
Finally
  M.Free;
End;
Und wie man sieht, kann aus "Sicherheitsgründen" die Platte auch nicht all zulange belastet werden ... ich will ja nicht, daß den Leseköpfen schwindlig wird :angel2:

[edit] DL entfernt

Download v01.08.06 8:13: http://www.delphipraxis.net/download.php?id=20621

Daniel B 31. Jul 2006 13:26

Re: kleiner ProgrammCheck (Festplatten auslesen
 
Liste der Anhänge anzeigen (Anzahl: 1)
Da hast mal ein Screenie, mit Raid 0. Wenn ih irgend eine Partition anklicke, dann ist rechts dann alles leer, gilt auch für die normale USB-Platte. Die einzlenen Platten allerdings tauchen nicht mehr auf und somit sind auch keine Infos darüber verfügbar, wie SerNr oder sonst was...

Das Fenster sollte man ruhig in der Grösse verändern könnne, oder mach es einfach grösser, Physical Drives ist meistens doch länger und man müsste nicht scrollen.

himitsu 31. Jul 2006 13:38

Re: kleiner ProgrammCheck (Festplatten auslesen
 
Hab's doch geschrieben ... ein eigenes "leeres" Fenster wurde den Partitionen bereits spendiert ... nur für den Inhalt dieses Fensters konnte ich mich noch nicht entscheiden, also was und wie ich es anzeige ._.

Daniel B 31. Jul 2006 13:44

Re: kleiner ProgrammCheck (Festplatten auslesen
 
Ja, hatte es überlesen, sry... :/

Die Infos der einzelnen Platten fndest du übrigens über SCSI- und RAID-Controller, nicht über das Raid an sich... Windows hat ja die Infos, schau mal im GM unter SCSI-Controller... da ist der prim. und sec. channel aufgeführt, da drinenn sind dann die einzelnen Platten drin...

Go2EITS 31. Jul 2006 14:24

Re: kleiner ProgrammCheck (Festplatten auslesen
 
Nun geht es bei mir auch nicht mehr! :(
Ich hoffe, Du bekommt es auch unter Windows2000 die Rescue.exe wieder zum Laufen.
XP ist auf meinem Rechner ca. 20% langsamer unter Windows2000. Und allein in Deutschland.
werden wohl über eine 1.000.000 Rechner noch Windows2000 installiert haben. Und wahrscheinlich 300-500 Mio. auf der ganzen Welt... Deine potienziellen Kunden :)
Ach ja. Es ist hier üblich, immer im ersten Beitrag die neuesten Dateien/Sourcen zur Verfügung zustellen und ein kleines Changelog zuschreiben. Hilft der Übersichtlichkeit und zeigt Deine Fortschritte, ohne sich im Threadbeitrag "durchwühlen" zu müssen.
Beste Grüße von G02EITS. :chat:


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:49 Uhr.
Seite 3 von 6     123 45     Letzte »    

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