| Autor | Beitrag | 
| Frühlingsrolle Ehemaliges Mitglied
 Erhaltene Danke: 1
 
 
 
 
 | 
Verfasst: Fr 02.06.17 09:36 
 
- Nachträglich durch die Entwickler-Ecke gelöscht - | 
|  | 
| jaenicke 
          Beiträge: 19326
 Erhaltene Danke: 1749
 
 W11 x64 (Chrome, Edge)
 Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
 
 | 
Verfasst: Fr 02.06.17 22:37 
 
Bei mir funktioniert die Funktion korrekt. Du musst diese allerdings mit Adminrechten ausführen. | 
|  | 
| Frühlingsrolle Ehemaliges Mitglied
 Erhaltene Danke: 1
 
 
 
 
 | 
Verfasst: Fr 02.06.17 23:45 
 
- Nachträglich durch die Entwickler-Ecke gelöscht - | 
|  | 
| jaenicke 
          Beiträge: 19326
 Erhaltene Danke: 1749
 
 W11 x64 (Chrome, Edge)
 Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
 
 | 
Verfasst: Sa 03.06.17 07:33 
 
Hast du Delphi 10.1 benutzt? Ich Delphi 10.2, da sollte kein Unterschied liegen...
Und ich habe den Code 1:1 kopiert.
 
 Hast du einmal mit Adminrechten debuggt? Bekommst du ein Handle von CreateFile?
 | 
|  | 
| t.roller 
          Beiträge: 118
 Erhaltene Danke: 34
 
 
 
 
 | 
Verfasst: Sa 03.06.17 09:34 
 
CrystalDiskInfo zeigt bei manchen USB-Drives S.M.A.R.T.-Werte an, bei manchen nicht.
 Der Code vom TE scheint aber bei USB-Drives nie richtig zu funktionieren.
 | 
|  | 
| Frühlingsrolle Ehemaliges Mitglied
 Erhaltene Danke: 1
 
 
 
 
 | 
Verfasst: Sa 03.06.17 11:58 
 
- Nachträglich durch die Entwickler-Ecke gelöscht - | 
|  | 
| jaenicke 
          Beiträge: 19326
 Erhaltene Danke: 1749
 
 W11 x64 (Chrome, Edge)
 Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
 
 | 
Verfasst: Sa 03.06.17 14:03 
 
	  |  Frühlingsrolle hat folgendes geschrieben  : |  	  | Habe es nun auch mit Delphi 10.1 getestet und es lief genauso erfolglos ab. Das Handle scheint gültig zu sein. | 
 Was heißt scheint... Hast du das im Debugger geprüft und immer auch SysErrorMessage(GetLastError) in Strg + F7 ausgewertet?
 Dann müsstest du doch ganz genau wissen was passiert... Ein Aufsplitten der Methoden brauchst du doch gar nicht.
 Ich habe natürlich jetzt nur unter Windows 10 getestet, nicht unter alten Systemen. | 
|  | 
| Frühlingsrolle Ehemaliges Mitglied
 Erhaltene Danke: 1
 
 
 
 
 | 
Verfasst: Sa 03.06.17 14:42 
 
- Nachträglich durch die Entwickler-Ecke gelöscht - | 
|  | 
| jaenicke 
          Beiträge: 19326
 Erhaltene Danke: 1749
 
 W11 x64 (Chrome, Edge)
 Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
 
 | 
Verfasst: Sa 03.06.17 21:28 
 
Du kannst ja die Werte einmal im Debugger bzw. im API Monitor vergleichen...
   
Einloggen, um Attachments anzusehen!
 | 
|  | 
| Frühlingsrolle Ehemaliges Mitglied
 Erhaltene Danke: 1
 
 
 
 
 | 
Verfasst: Sa 03.06.17 22:53 
 
- Nachträglich durch die Entwickler-Ecke gelöscht - | 
|  | 
| jaenicke 
          Beiträge: 19326
 Erhaltene Danke: 1749
 
 W11 x64 (Chrome, Edge)
 Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
 
 | 
Verfasst: So 04.06.17 18:53 
 
Ich benutze nur Windows 10 64 Bit.
 Leider habe ich keinen physischen PC mit einem anderen Betriebssystem mehr zur Verfügung aktuell... und in einer VM geht SMART nicht.
 
 Die Befehlslänge ist falsch müsste ja eigentlich heißen, dass die Strukturgröße falsch ist. Ist die denn identisch zu mir (36 bzw. 20)?
 | 
|  | 
| t.roller 
          Beiträge: 118
 Erhaltene Danke: 34
 
 
 
 
 | 
Verfasst: So 04.06.17 21:50 
 
Hier ist eine Liste von smartmontools , die USB-Bridges und HDDs enthält.
www.smartmontools.or...upported_USB-Devices Wenn smartmontools  und CrystalDiskInfo  nicht funktionieren, werden DELPHI-Programme auch nicht funktionieren. | 
|  | 
| jaenicke 
          Beiträge: 19326
 Erhaltene Danke: 1749
 
 W11 x64 (Chrome, Edge)
 Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
 
 | 
Verfasst: So 04.06.17 21:57 
 | 
|  | 
| Frühlingsrolle Ehemaliges Mitglied
 Erhaltene Danke: 1
 
 
 
 
 | 
Verfasst: So 04.06.17 23:30 
 
- Nachträglich durch die Entwickler-Ecke gelöscht - | 
|  | 
| jaenicke 
          Beiträge: 19326
 Erhaltene Danke: 1749
 
 W11 x64 (Chrome, Edge)
 Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
 
 | 
Verfasst: Mo 05.06.17 05:23 
 
	  |  Frühlingsrolle hat folgendes geschrieben  : |  	  | cmdIn.bDriveNumber den Wert 176 zugwiesen bekommt | 
 Du solltest den Inhalt des Records einmal mit 0 initialisieren. bDriveNumber wird zwar laut Doku ignoriert, aber vielleicht stören ja andere nicht initialisierte Werte...
 Denn da stehen ja dann "zufällige" Werte drin.
 Vielleicht so? 		                       Delphi-Quelltext 
 									| 1:2:
 3:
 4:
 5:
 6:
 7:
 8:
 9:
 10:
 11:
 12:
 13:
 14:
 15:
 16:
 17:
 18:
 19:
 20:
 21:
 
 |   if hnd <> INVALID_HANDLE_VALUE thenbegin
 ZeroMemory(@cmdIn, SizeOf(cmdIn));
 with cmdIn.irDriveRegs do
 begin
 bFeaturesReg := ENABLE_SMART;
 bSectorCountReg := 1;
 bSectorNumberReg := 1;
 bCylLowReg := SMART_CYL_LOW;
 bCylHighReg := SMART_CYL_HI;
 bDriveHeadReg := DRIVE_HEAD_REG;
 bCommandReg := SMART_CMD;
 
 ZeroMemory(@cmdOut, SizeOf(cmdOut));
 result := DeviceIoControl(hnd, SMART_SEND_DRIVE_COMMAND,
 @cmdIn, SizeOf(cmdIn), @cmdOut, SizeOf(cmdOut),
 bytesReturned, nil);
 end;
 end;
 
 |  // EDIT:
 Und dann steht da in der Doku noch das...
 Vielleicht funktioniert das erst ab Windows 10 auch ohne diesen Bufferteil...
 Füge doch einfach mal diese IdeRegs noch in die OutParams ein: 		                       Delphi-Quelltext 
 									| 1:2:
 3:
 4:
 5:
 6:
 
 |   _SENDCMDOUTPARAMS = recordcBufferSize: DWord;
 DriverStatus: TDriverStatus;
 bBuffer: array[0..0] of Byte;
 irDriveRegs: TIdeRegs;
 end;
 |  Übergebe ich als Größe der Out-Params aber zu wenig, bekomme ich den Fehler: 	  | Zitat: |  	  | Der an einen Systemaufruf übergebene Datenbereich ist zu klein 
 | 
 Deshalb vermute ich nicht, dass es daran liegt.
 // EDIT2:
 Ich habe gerade gelesen, dass nicht alle Mainboards mit nForce Chipsatz diese SMART Kommandos unterstützen. Hast du zufällig so eins?
 // EDIT3:
 Bist du sicher, dass du für die Abfrage des SMART Status den richtigen Befehl benutzt? Ich verstehe deinen Befehl so, dass du SMART damit versuchst zu aktivieren...
 Sollte nicht eher SMART_RCV_DRIVE_DATA dafür geeignet sein?
 												| 1:2:
 3:
 4:
 5:
 6:
 7:
 8:
 9:
 10:
 11:
 12:
 13:
 14:
 15:
 16:
 17:
 18:
 19:
 20:
 21:
 22:
 23:
 24:
 25:
 26:
 27:
 28:
 29:
 30:
 31:
 32:
 33:
 34:
 35:
 36:
 37:
 38:
 39:
 40:
 41:
 
 | constSMART_SEND_DRIVE_COMMAND     = $0007C084;
 ENABLE_SMART                 = $000000D8;
 SMART_CYL_LOW                = $0000004F;
 SMART_CYL_HI                 = $000000C2;
 SMART_CMD                    = $000000B0;
 DRIVE_HEAD_REG               = $000000A0;
 READ_ATTRIBUTES              = $D0;
 READ_THRESHOLDS              = $D1;
 
 function SmartExists(ADriveLetter: Char): Boolean;
 var
 root: PChar;
 hnd: THandle;
 cmdIn: TSendCmdInParams;
 cmdOut: TSendCmdOutParams;
 bytesReturned: DWord;
 begin
 result := false;
 root := PChar('\\.\' + UpCase(ADriveLetter) + ':');
 hnd := CreateFile(root, GENERIC_READ or GENERIC_WRITE,
 FILE_SHARE_READ or FILE_SHARE_WRITE, nil,
 OPEN_EXISTING, FILE_ATTRIBUTE_SYSTEM, 0);
 
 if hnd <> INVALID_HANDLE_VALUE then
 begin
 ZeroMemory(@cmdIn, SizeOf(cmdIn));
 cmdIn.cBufferSize := 512;
 with cmdIn.irDriveRegs do
 begin
 bFeaturesReg := READ_ATTRIBUTES;
 bCommandReg := SMART_CMD;
 bDriveHeadReg := DRIVE_HEAD_REG;
 
 ZeroMemory(@cmdOut, SizeOf(cmdOut));
 result := DeviceIoControl(hnd, SMART_RCV_DRIVE_DATA,
 @cmdIn, SizeOf(cmdIn), @cmdOut, SizeOf(cmdOut),
 bytesReturned, nil);
 end;
 end;
 end;
 |  | 
|  | 
| Frühlingsrolle Ehemaliges Mitglied
 Erhaltene Danke: 1
 
 
 
 
 | 
Verfasst: Mo 05.06.17 06:41 
 
- Nachträglich durch die Entwickler-Ecke gelöscht - | 
|  | 
| jaenicke 
          Beiträge: 19326
 Erhaltene Danke: 1749
 
 W11 x64 (Chrome, Edge)
 Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
 
 | 
Verfasst: Mo 05.06.17 07:34 
 
Mit SMART_RCV_DRIVE_DATA bekomme ich auch problemlos die einzelnen Werte für die Smart-Daten. Die stimmen auch mit CrystalDiskInfo überein. | 
|  | 
| Frühlingsrolle Ehemaliges Mitglied
 Erhaltene Danke: 1
 
 
 
 
 | 
Verfasst: Mo 05.06.17 07:43 
 
- Nachträglich durch die Entwickler-Ecke gelöscht - | 
|  | 
| Frühlingsrolle Ehemaliges Mitglied
 Erhaltene Danke: 1
 
 
 
 
 | 
Verfasst: Di 06.06.17 08:26 
 
- Nachträglich durch die Entwickler-Ecke gelöscht - 
 Zuletzt bearbeitet von Frühlingsrolle am Di 06.06.17 09:01, insgesamt 1-mal bearbeitet
 | 
|  | 
| jaenicke 
          Beiträge: 19326
 Erhaltene Danke: 1749
 
 W11 x64 (Chrome, Edge)
 Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
 
 | 
Verfasst: Di 06.06.17 08:43 
 
Du hast wieder das ZeroMemory vergessen...   | 
|  |