Ich mag die Performance Counter auf all bisherigen x86-Hardware angeboten programmieren und lesen.
Unter Linux gibt es den verschiedene perf_events
-Systeme, dies zu tun (und das perf
Dienstprogramm, es zu tun von außerhalb eines nicht-modifizierten Programms).
Gibt es eine solche integrierte in der Einrichtung in Windows? Wenn kein Einbau-Anlage vorhanden ist, würde die zweitbeste ein anderer Ansatz sein vielleicht Code von Drittanbietern verwenden, aber das ist es nicht erforderlich mir einen Fahrer unterzeichnet zu bekommen.
Kurze Antwort
Nein, in Windows gibt es keine integrierte Funktion. Auch der Befehl linux perf
funktioniert nicht auf dem Linux-Subsystem für Windows 10.
Lange Antwort
Um Zugriff auf diese Zähler zu erhalten, benötigen Sie eine Kombination dieser Anweisungen:
Leider können diese Anweisungen nur vom Kernel-Modus aus aufgerufen werden, Sie müssen also mit einem Treiber interagieren. Während das Schreiben des Treibercodes selbst einfach ist, ist es nicht so einfach, den Treiber zu signieren (besonders, da du erwähnt hast, dass du das als Individuum machen willst).
Deshalb rate ich Ihnen, sich bereits existierende Projekte wie Open Hardware Monitor und pcm Projekt von Intel.
Hardwaremonitor öffnen
Dieses Open-Source-Projekt ist in C # geschrieben und enthält Binärdateien und C-Quellcode eines WinRing0.sys (32-Bit) / WinRing0x64.sys (64-Bit) -Treibers von OpenLibSys.org. Wenn Sie diesen Treiber in Ihrem Projekt verwenden möchten, müssen Sie nur den Urheberrechtshinweis
PCM
Dieses Open-Source-Projekt ist in C ++ geschrieben und enthält auch eine Quelle für einen ähnlichen Treiber (siehe WinMSRDriver-Verzeichnis), aber Sie müssen Sie es selbst bauen, damit Sie wieder in das Signierungsproblem kommen.
Wie auch immer, wollte dieses Projekt erwähnen, weil es wahrscheinlich eine Menge Code enthält, der von Interesse sein könnte.
Zugriff auf den Benutzermodus
Sobald Sie diesen Treiber geladen haben (Open Hardware Monitor extrahiert und lädt den Treiber automatisch beim Start der Anwendung, was ziemlich ordentlich ist), können Sie diese Treiber-IOCTLs mit den Windows-API-Funktionen aufrufen CreateFile
/ DeviceIoControl
und natürlich CloseHandle
von Ihrer Benutzermodus-Anwendung.
Tags und Links x86 windows hardware performance