bacchi
Goto Top

"Ist C: eine SSD oder HDD?" per WinAPI auf Win 7

  • Könnte jemand untiges Programm auf einer seiner Win7-Installationen testen?
  • Gibt es andere Ideen, HDDs ohne Admin-Rechte zuverlässig zu erkennen?

Unser Reporting-Tool soll künftig melden, ob im PC noch echte Festplatten verwendet werden. Es gibt schon Code, der SSDs anhand der Trim-Unterstützung erkennt. Ich habe daraus dieses kleine Programm zum Testen geschrieben. Auf meinem (vollständig gepatchtem) Windows-7-Testsystem versagt leider DeviceIoControl, was laut Quelle nicht sein sollte. Möglicherweise irrt die Quelle, es könnte aber auch an meiner Konfiguration oder einem Fehler im Quelltext liegen.

#pragma comment(lib, "kernel32.lib")	{{comment_multi_line:0}} 
#pragma comment(lib, "user32.lib")	{{comment_multi_line:1}} 

#include <windows.h>
#include <winioctl.h>			{{comment_multi_line:2}}

int main(void)
{
	HANDLE				 ger;		/* Gerät */
	STORAGE_PROPERTY_QUERY		 anfr; 		/* Anfrage */
	DEVICE_TRIM_DESCRIPTOR		 aw;		/* Antwort */
	DWORD				 len;		/* Länge der Antwort */

	anfr.PropertyId = StorageDeviceTrimProperty;
	anfr.QueryType = PropertyStandardQuery;

	if ((ger = CreateFile("\\\\.\\C:", 0, 0,  
	    NULL, OPEN_EXISTING, 0, NULL)) == INVALID_HANDLE_VALUE)
		{ MessageBox(0, "creat", "Antwort", 0); return -1; }  

	/* gibt 0, NtDeviceIoControl = C000000010 */
	if (!DeviceIoControl(ger, IOCTL_STORAGE_QUERY_PROPERTY, 
	    &anfr, sizeof(anfr), &aw, sizeof(aw), &len, NULL))
		{ MessageBox(0, "ioctl", "Antwort", 0); return -1; }  
	CloseHandle(ger);
	if (len == 0)
		{ MessageBox(0, "len=0", "Antwort", 0); return -1; }  
	MessageBox(0, aw.TrimEnabled ? "ja" : "nein", "Antwort", 0);  
}

Content-ID: 21809055632

Url: https://administrator.de/contentid/21809055632

Ausgedruckt am: 20.09.2024 um 22:09 Uhr

ipzipzap
ipzipzap 21.06.2024 aktualisiert um 20:16:42 Uhr
Goto Top
Hi,

schau Dir mal die Microsoft WMI Klasse "MSFT_PhysicalDisk" an. Bei einer SSD ist der mediatype "4" und SpindleSpeed ist "0".

https://learn.microsoft.com/de-de/windows-hardware/drivers/storage/msft- ...

cu,
ipzipzap

EDIT: ARGHH! Sehe gerade Mindestversion ist Windows 8. Sorry face-sad