Super-I/O-Chip-Ermittlung/CPU-Core-Spannung

Hardware- und Elektronikbasteleien, Ansteuerung von Schnittstellen und Peripherie.
Fragen zu "Consumer"-Problemen kommen in Offtopic.
Benutzeravatar
Falko
Admin
Beiträge: 3531
Registriert: 29.08.2004 11:27
Computerausstattung: PC: MSI-Z590-GC; 32GB-DDR4, ICore9; 2TB M2 + 2x3TB-SATA2 HDD; Intel ICore9 @ 3600MHZ (Win11 Pro. 64-Bit),
Acer Aspire E15 (Win11 Home X64). Purebasic LTS 6.0
Kontaktdaten:

Beitrag von Falko »

Helle hat geschrieben:Das mit der 9 ist schon richtig. Ist "Temporäres Executable im Quellcode-Verzeichnis erstellen" aktiviert? Sonst kommt bei Ausführung über der IDE die Fehlermeldung mit der Initialisierung.

Gruß
Helle
Eingeschaltet ist das schon. Sonst kommt diese Fehlermeldung heraus:

---------------------------
Fehler !
---------------------------
Fehler mit der DLL !
---------------------------
OK
---------------------------


Beim eingeschalteten Temporäres Executable... ist es aber diese Fehlermeldung:

---------------------------
Fehler !
---------------------------
Fehler mit der Initialisierung !
---------------------------
OK
---------------------------


Gruß Falko
Bild
Win10 Pro 64-Bit, PB_5.4,GFA-WinDOS, Powerbasic9.05-Windows, NSBasic/CE, NSBasic/Desktop, NSBasic4APP, EmergenceBasic
Benutzeravatar
Helle
Beiträge: 566
Registriert: 11.11.2004 16:13
Wohnort: Magdeburg

Beitrag von Helle »

So, habe auf ´ner alten Platte mal Windows 7(x64, Beta Ultimate) installiert um das Ganze nachvollziehen zu können. Ist so, wie Falko es beschrieb. Also hier die Abhilfe; ich hoffe, geht so auch für Vista:

Code: Alles auswählen

;Installation des Treibers von WinRing0x64 unter Windows 7 (Vista ?), 64-Bit (analog für 32-Bit) 
;1. als User "Administrator" anmelden (Konto aktivieren in Computerverwaltung/Lokale Nutzer und
;   Gruppen/Benutzer); nach Neustart wieder deaktivieren
;2. die WinRing0x64.sys in windows/system32/drivers kopieren
;3. nachfolgenden (harmlosen!) Code ausführen
;4. Neustart und als üblicher User anmelden

Global hReg.l
Global hMgr.l
Global Messages.l = 0                  ;0 = Meldungen abschalten
Global SS.SERVICE_STATUS               ;(auch) PB-Structure
 
;------------------ Überprüfung, ob Registry-Eintrag für WinRing0x64 existiert
Procedure RegTest()
hReg = RegOpenKeyEx_(#HKEY_LOCAL_MACHINE, "SYSTEM\CurrentControlSet\Services\WinRing0x64", 0, #KEY_ALL_ACCESS, @hKey) 
If Messages
  If hReg = 0
    MessageRequester("Statusmeldung von RegTest", "WinRing0x64 ist im System schon registriert")
   Else
    MessageRequester("Statusmeldung von RegTest", "WinRing0x64 ist dem System nicht bekannt")
  EndIf
EndIf
RegCloseKey_(hKey) 
EndProcedure 
;------------------  

;------------------ Dienst installieren
Procedure DienstInst()
hMgrC = OpenSCManager_(0, 0, #SC_MANAGER_CREATE_SERVICE) 
SystemDir$ = Space(255) 
FileL = GetSystemDirectory_(SystemDir$, 255) 
DriverDir$ = Left(SystemDir$, FileL) + "\drivers" 
hInst = CreateService_(hMgrC, "WinRing0x64", "WinRing0x64", #SERVICE_ALL_ACCESS, #SERVICE_KERNEL_DRIVER, #SERVICE_SYSTEM_START, #SERVICE_ERROR_NORMAL, DriverDir$ + "\WinRing0x64.sys", #Null, #Null, #Null, #Null, #Null)
If Messages
  If hInst <> 0
    MessageRequester("Statusmeldung von DienstInst", "WinRing0x64 wurde als Dienst installiert !")
   Else 
    MessageRequester("Statusmeldung von DienstInst", "WinRing0x64 konnte nicht als Dienst installiert werden ! (ist evtl. schon installiert)")
  EndIf   
EndIf
CloseServiceHandle_(hInst)
CloseServiceHandle_(hMgrC)
EndProcedure 
;------------------

;------------------ DienstStatus ermitteln
Procedure DienstStatus()
hSvc = OpenService_(hMgr, "WinRing0x64", #SERVICE_QUERY_STATUS)
QueryServiceStatus_(hSvc, @SS)
If Messages  
  If SS\dwCurrentState = 4
    MessageRequester("Statusmeldung von DienstStatus", "WinRing0x64 ist gestartet !")
   Else 
    MessageRequester("Statusmeldung von DienstStatus", "WinRing0x64 ist nicht gestartet !")
  EndIf   
EndIf
CloseServiceHandle_(hSvc)
EndProcedure 
;------------------

;------------------ Dienst starten 
Procedure DienstStart()
hSvc = OpenService_(hMgr, "WinRing0x64", #SERVICE_ALL_ACCESS)
IsStart = StartService_(hSvc, 0, #Null)  ;0=war schon gestartet (=lässt sich nicht starten)  1=wurde hiermit gestartet
If Messages  
  If IsStart = 1
    MessageRequester("Statusmeldung von DienstStart", "WinRing0x64 wurde gestartet !")
   Else
    MessageRequester("Statusmeldung von DienstStart", "WinRing0x64 konnte nicht gestartet werden ! (ist evtl. schon gestartet)")
  EndIf     
EndIf
CloseServiceHandle_(hSvc)
EndProcedure 
;------------------

;------------------ WinRing0x64 installieren
;Messages = 1                 ;für Fehlersuche oder reine Neugier
RegTest()                    ;ob WinRing0x64 in Registry vorhanden
If hReg
  Abfrage = MessageRequester("Abfrage", "Soll WinRing0x64 installiert werden ?", #PB_MessageRequester_YesNo)
  If Abfrage = #PB_MessageRequester_Yes
    DienstInst()             ;war noch nicht installiert
   Else
    End 
  EndIf  
EndIf 
hMgr = OpenSCManager_(#Null, #Null, #GENERIC_READ)    ;Handle für Zugriff auf den Dienst-Manager
DienstStatus()               ;bei Programmstart überprüfen
If SS\dwCurrentState <> 4    ;4 = schon gestartet
  DienstStart()              ;noch nicht gestartet, also jetzt starten
EndIf 
Sollte so auch analog mit anderen Treibern funktionieren.

Gruß
Helle
Benutzeravatar
Falko
Admin
Beiträge: 3531
Registriert: 29.08.2004 11:27
Computerausstattung: PC: MSI-Z590-GC; 32GB-DDR4, ICore9; 2TB M2 + 2x3TB-SATA2 HDD; Intel ICore9 @ 3600MHZ (Win11 Pro. 64-Bit),
Acer Aspire E15 (Win11 Home X64). Purebasic LTS 6.0
Kontaktdaten:

Beitrag von Falko »

Leider geht es immer noch nicht. Stattdessen erhalte ich folgende
Message:

---------------------------
Abfrage
---------------------------
Soll WinRing0x64 installiert werden ?
---------------------------
Ja Nein
---------------------------

Welche bei jedem Programmstart erneut kommt.

Ich habe mir mal testhalber die Installrotine mittels Debug ausgeben lassen und erhalte folgende Verzeichnispfade wohin die sys kopiert werden soll. Dort wird aber nichts hin kopiert, vermutlich wegen Vista:
19
C:\Windows\system32\drivers
ein Manuelles kopieren brachte auch kein Erfolg. Am Wochenende habe ich mehr Zeit. Vielleicht finde ich ja den Grund, warum es so ist.

Gruß Falko
Bild
Win10 Pro 64-Bit, PB_5.4,GFA-WinDOS, Powerbasic9.05-Windows, NSBasic/CE, NSBasic/Desktop, NSBasic4APP, EmergenceBasic
Blackfarmer
Beiträge: 1
Registriert: 19.09.2009 18:30

Re: Super-I/O-Chip-Ermittlung/CPU-Core-Spannung

Beitrag von Blackfarmer »

Hallo,

ich habe mit Spannung heute diesen Thread verfolgt und bin ganz neugierig geworden! Ich habe schon lange was gesucht, um die Lüfter im PC selber zu steuern, und ich denke mit dem hier bin ich auf den richtigen Weg dazu.

Leider konnte ich momentan noch nichts ausprobieren, aber wenn ich die ersten Schritte gemacht habe, halte ich euch auf den Laufenden.


Habe jetzt nur eine Frage:
Ich denke jeder Super-IO Chip braucht zum Access immer eine Befehlsfolge zum "freischalten" und einen Befehl zum beenden.
Ich glaube, dass ich am System nicht der einzigste bin, der auf das IC zugreifen will, deswegen hat sich mir schnell die Frage gestellt, wie das mit dem Zugriff geregelt ist?

Zum Beispiel
1) könnte ich mir den Zugriff zum IC verschaffen
2) mein Programm wird unterbrochen und ein anderes Programm verschaft sich Zugriff und beendet den Zugriff auf das IC
3) mein Programm bekommt wieder Prioriät und will vom IC auslesen - geht aber nicht mehr, da der Zugriff beendet worden ist -> ERROR

Vg
Martin

P.S.
Ich denke, dass ich OpenLibSys verwenden werde.
Benutzeravatar
Helle
Beiträge: 566
Registriert: 11.11.2004 16:13
Wohnort: Magdeburg

Re: Super-I/O-Chip-Ermittlung/CPU-Core-Spannung

Beitrag von Helle »

Hallo Blackfarmer,
willkommen im Club der Bastler :mrgreen: !
Abhängigkeiten verschiedener Hardware-Zugriffs-Programme (Monitoring) treten normalerweise (erfahrungsgemäss) nicht auf; wobei ich oft das Gefühl habe, diese Programme beenden den Zugriffs-Modus nicht. Ich kann z.B. SIW, SpeedFan und mein unten gezeigtes Programm parallel laufen lassen, beende die "Fremd-"Programme und siehe da, mein Programm funktioniert immer noch. Im Zweifelsfall kann man immer noch den kompletten Zu/Ab-Schalt-Mechanismus in jeder Aktualisierungs-Phase ablaufen lassen. Wenn doch eine Abschaltung (im Fremd-Programm-Thread) erfolgte, geht´s dann wieder weiter. Einfach ausprobieren!
Hier mein CPU-Lüfter-Monitor-Programm:

Code: Alles auswählen

[code]
;- CPU-Lüfter-(Hand-)Steuerung für PWM-Lüfter (PWM=Puls-Weiten-Modulation, Lüfter mit 4-adrigen Anschluss)
;- die automatischen Regelungs-Modi des IO-Chips werden hier nicht genutzt - wir wollen ja selber programmieren!
;- Nutzung der WinRing0-Dll´s (32-und 64-Bit). Copyright (c) 2007-2009 OpenLibSys.org. All rights reserved.
;- "Helle" Klaus Helbing, 20.09.2009, PB 4.40 Beta 3 (x86, x64)
;- für Intel-CPU´s mit DTS (Digital Temperature Sensor), Motherboards mit Winbond W83627DHG
;- BIOS-CPU-Lüftersteuerung (z.B. Q-Fan bei Asus-Boards) deaktivieren!
;- nachdem man sieht, wie der Lüfter reagiert, kann eine eigene automatische Steuerung programmiert werden

Lo.l
Hi.l
PMask.i
SMask.i
Tj.i = 100                                  ;für Intel E8400

Adr.w
WertB.b

SI.SYSTEM_INFO                              ;Structure System_Info

#PROCESSOR_ARCHITECTURE_AMD64 = $9
#MSR_IA32_THERM_STATUS = $19C               ;Unique, d.h. bei Multi-Cores jeder Core eigenes MSR

;auf DTS (Digital Temperature Sensor) testen
!mov eax,6
!cpuid
!test eax,1
!jnz @f
MessageRequester("Abbruch !", "Digital Temperature Sensor wird nicht unterstützt !")
End
!@@:

GetSystemInfo_(@SI)
AnzCore = SI\dwNumberOfProcessors           ;Anzahl der CPU-Cores

If OpenWindow(0, 0, 0, 200, 210 + AnzCore * 15, "CPU-Lüfter-Steuerung", #PB_Window_SystemMenu | #PB_Window_ScreenCentered | #PB_Window_MinimizeGadget)
  ;ermitteln, ob 32- oder 64-Bit-Betriebssystem
  If SI\wProcessorArchitecture = #PROCESSOR_ARCHITECTURE_AMD64
    OS3264 = 1
  EndIf
  ;die entsprechende DLL öffnen
  If OS3264
    DLLOK = OpenLibrary(0, "WinRing0x64.dll")    ;64-Bit-Version laden
   Else
    DLLOK = OpenLibrary(0, "WinRing0.dll")       ;32-Bit-Version laden
  EndIf

  If DLLOK
    Prototype.i ProtoWinRing0_0()
    WR0_InitializeOls.ProtoWinRing0_0 = GetFunction(0, "InitializeOls")
    WR0_DeinitializeOls.ProtoWinRing0_0 = GetFunction(0, "DeinitializeOls")

    Prototype.i ProtoWinRing0_1(V1b.b)
    WR0_ReadIoPortByte.ProtoWinRing0_1 = GetFunction(0, "ReadIoPortByte")

    Prototype.i ProtoWinRing0_2(V1w.w, V2b.b)
    WR0_WriteIoPortByte.ProtoWinRing0_2 = GetFunction(0, "WriteIoPortByte")

    Prototype.i ProtoWinRing0_4(V1l.l, V2l.l, V3l.l, V4l.l)
    WR0_RdmsrPx.ProtoWinRing0_4 = GetFunction(0, "RdmsrPx")

    If WR0_InitializeOls()

      PID = GetCurrentProcessId_()          ;Programm-ID dieses Programmes ermitteln
      hProc = OpenProcess_(#PROCESS_ALL_ACCESS, #False, PID)    ;Handle des Prozesses

      WR0_WriteIoPortByte($2E, $87)         ;Einschalten des Extended Function Mode für Winbond
      WR0_WriteIoPortByte($2E, $87)         ;muss 2x aufgerufen werden!
    
      WR0_WriteIoPortByte($2E, $7)          ;Logical Device auswählen
      WR0_WriteIoPortByte($2F, $B)          ;$B=Hardware-Monitor

      WR0_WriteIoPortByte($2E, $60)         ;High-Byte Register Address Base
      WertB = WR0_ReadIoPortByte($2F)
      Adr = WertB & $FF
      Adr << 8                              ;nach Word-High schieben  

      WR0_WriteIoPortByte($2E, $61)         ;Low-Byte Register Address Base
      WertB = WR0_ReadIoPortByte($2F)
      Adr + (WertB & $FF)                   ;+5=Address Port, +6=Data Port
      ;Index $4E, Bits 0-2=Bank setzen, %000=Bank 0 usw.
      WR0_WriteIoPortByte(Adr + 5, $4E)
      WertB = WR0_ReadIoPortByte(Adr + 6)
      WertB & %11111000                     ;Bank 0 setzen
      WR0_WriteIoPortByte(Adr + 5, $4E)
      WR0_WriteIoPortByte(Adr + 6, WertB)
      ;PWM-Modus setzen und Control-Mode auf manuell setzen (eigentlich default)
      WR0_WriteIoPortByte(Adr + 5, $4)
      WertB = WR0_ReadIoPortByte(Adr + 6)
      WertB & %11001101                     ;Bit1=0 PWM, Bit4-5=0 manuell
      WR0_WriteIoPortByte(Adr + 6, WertB)
      ;Fan-Divisor auf 8 (sinnvoll wäre auch 4) setzen, da Lüfter-abhängig selber testen!
      WR0_WriteIoPortByte(Adr + 5, $47)     ;Bit6 -> Bit0, Bit7 -> Bit1 Fan-Divisor
      WertB = WR0_ReadIoPortByte(Adr + 6)
      WertB & %00111111                     ;die Fan-Divisor-Bits löschen   
      WR0_WriteIoPortByte(Adr + 6, WertB | %11000000) ;und für Fan-Divisor = 8 setzen    
      WertB = WR0_ReadIoPortByte(Adr + 6)     
      WertB >> 6
      Shifter = WertB & %11
      WR0_WriteIoPortByte(Adr + 5, $5D)     ;Bit6 -> Bit2 FanDivisor
      WertB = WR0_ReadIoPortByte(Adr + 6)
      WertB & %10111111                     ;das Fan-Divisor-Bit löschen  
      WR0_WriteIoPortByte(Adr + 6, WertB)   ;und für Fan-Divisor = 8 setzen      
      WertB = WR0_ReadIoPortByte(Adr + 6)
      WertB >> 4
      WertB & %00000100
      Shifter + WertB
      FanDivisor = 1 << Shifter
      ;PWM-Clock-Source ermitteln
      WR0_WriteIoPortByte(Adr + 5, $2)      ;$2=PWM-Clock-Source
      WertB = WR0_ReadIoPortByte(Adr + 6)
      If WertB & %10000000                  ;Bit7 testen
        PWMClockSource = 180                ;in kHz
       Else 
        PWMClockSource = 24000              ;in kHz  
      EndIf
      ;PWM-Divisor ermitteln
      PWMDivisor = WertB & %1111111         ;Bits 0-6
      ;PWM-Frequenz ermitteln
      PWMFrequenz.f = PWMClockSource / (PWMDivisor * 256)
      ;PWM-Duty-Cycle ermitteln
      WR0_WriteIoPortByte(Adr + 5, $3)      ;$3=PWM-Duty-Cycle
      WR0_WriteIoPortByte(Adr + 6, $80)     ;auf 50% setzen
      PWMDutyCycle = WR0_ReadIoPortByte(Adr + 6) ;und wieder auslesen (zur Überprüfung)
 
      TextGadget(1, 10, 5, 180, 15, "I N F O S :", #PB_Text_Center)
      TextGadget(2, 10, 95, 180, 15, "M E S S W E R T E :", #PB_Text_Center)

      TextGadget(3, 10, 20, 130, 15, "PWM-Clock-Source (kHz) :")
      TextGadget(4, 160, 20, 30, 15, Str(PWMClockSource), #PB_Text_Right)
      TextGadget(5, 10, 35, 70, 15, "PWM-Divisor :")
      TextGadget(6, 160, 35, 30, 15, Str(PWMDivisor), #PB_Text_Right)
      TextGadget(7, 10, 50, 120, 15, "PWM-Frequenz (kHz) :")
      TextGadget(8, 150, 50, 40, 15, StrF(PWMFrequenz, 3), #PB_Text_Right)
      TextGadget(9, 10, 185 + AnzCore * 15, 180, 15, "Low" + Space(45) + "High")
 
      TextGadget(40, 10, 65, 180, 15, "Fan-Divisor setzen", #PB_Text_Center)
      OptionGadget(41, 10, 80, 30, 15, "2")
      OptionGadget(42, 47, 80, 30, 15, "4")
      OptionGadget(43, 84, 80, 30, 15, "8")
      SetGadgetState(43, 1)                 ;8 wurde oben gesetzt
      FanDivisorOld = 8
      OptionGadget(44, 121, 80, 35, 15, "16")
      OptionGadget(45, 158, 80, 35, 15, "32")

      TextGadget(12, 10, 110, 120, 15, "Core-Spannung (V) :")
      TextGadget(13, 160, 110, 30, 15, "", #PB_Text_Right) 
  
      For i = 0 To AnzCore - 1              ;hier für max.8 Cores
        TextGadget(15 + i, 10, 125 + 15 * i, 140, 15, "Temperatur CPU-Core" + Str(i) + " (°C) :")
        TextGadget(23 + i, 160, 125 + 15 * i, 30, 15, "", #PB_Text_Right) 
      Next 

      TextGadget(31, 10, 125 + AnzCore * 15, 130, 15, "Aktuelle Drehzahl (RPM) :")
      TextGadget(32, 160, 125 + AnzCore * 15, 30, 15, "", #PB_Text_Right)

      TextGadget(33, 10, 140 + AnzCore * 15, 130, 15, "PWM-Duty-Cycle (%) :")
      TextGadget(34, 160, 140 + AnzCore * 15, 30, 15, "", #PB_Text_Right)

      TextGadget(35, 10, 155 + AnzCore * 15, 180, 15, "Drehzahl verändern (über PWM)", #PB_Text_Center)
      TrackBarGadget(36, 10, 170 + AnzCore * 15, 180, 20, 0, 255)
      SetGadgetState(36, PWMDutyCycle)    

      AddWindowTimer(0, 0, 500)
      ;hier könnte auch der Extended Function Mode beendet werden und dann in der Schleife immer wieder neu 
     
      Repeat

        If EventTimer() = 0                 ;Aktualisierung und Anzeige ca. alle 0.5 Sekunden
          If FanDivisor <> FanDivisorOld
            Select FanDivisor
              Case 2
                FanDiv10 = %01000000        ;Werte aus Winbond-Dokumentation
                FanDiv6  = %00000000
              Case 4
                FanDiv10 = %10000000
                FanDiv6  = %00000000
              Case 8
                FanDiv10 = %11000000
                FanDiv6  = %00000000
              Case 16
                FanDiv10 = %00000000
                FanDiv6  = %01000000
              Case 32
                FanDiv10 = %01000000
                FanDiv6  = %01000000
            EndSelect
            
            WR0_WriteIoPortByte(Adr + 5, $47)    ;Bit6 -> Bit0, Bit7 -> Bit1 Fan-Divisor
            WertB = WR0_ReadIoPortByte(Adr + 6)
            Wert47 = (WertB & %00111111) | FanDiv10   ;die Fan-Divisor-Bits 1 und 0 setzen   
            WR0_WriteIoPortByte(Adr + 6, Wert47)

            WR0_WriteIoPortByte(Adr + 5, $5D)    ;Bit6 -> Bit2 Fan-Divisor
            WertB = WR0_ReadIoPortByte(Adr + 6)
            Wert5D = (WertB & %10111111) | FanDiv6    ;das Fan-Divisor-Bit 2 setzen  
            WR0_WriteIoPortByte(Adr + 6, Wert5D) 

            FanDivisorOld = FanDivisor
          EndIf          

          j = 1
          For i = 0 To AnzCore - 1
            SetProcessAffinityMask_(hProc, j)    ;diesen Prozess jetzt auf Core(j) "schieben"
            GetProcessAffinityMask_(hProc, @PMask, @SMask)
            WR0_RdmsrPx(#MSR_IA32_THERM_STATUS, @Lo, @Hi, PMask)
            CoreTemp = Lo & %11111110000000000000000  ;Bits 16-22
            CoreTemp >> 16
            SetGadgetText(23 + i, Str(Tj - CoreTemp)) ;Tj=100 vom E8400
            j << 1
          Next

          WR0_WriteIoPortByte(Adr + 5, $20) ;$20=CPUVCORE
          WertB = WR0_ReadIoPortByte(Adr + 6)
          CoreSpannung = (WertB & $FF) * 8  ;Auflösung für W83627DHG ist 8mV/Bit  (oder <<3) 
          SetGadgetText(13, StrF(CoreSpannung / 1000, 3))

          WR0_WriteIoPortByte(Adr + 5, $29) ;$29=CPUVFANIN0
          Wert = WR0_ReadIoPortByte(Adr + 6)
          FanRotations = 1350000 / (Wert * FanDivisor)     ;aus Winbond-Dokumentation
          SetGadgetText(32, Str(FanRotations))

          If PWMDutyCycleSet <> PWMDutyCycleOld
            WR0_WriteIoPortByte(Adr + 5, $3)     ;$3=PWM-Duty-Cycle
            WR0_WriteIoPortByte(Adr + 6, PWMDutyCycleSet)
            PWMDutyCycleOld = PWMDutyCycleSet
          EndIf          
          
          WR0_WriteIoPortByte(Adr + 5, $3)  ;$3=PWM-Duty-Cycle
          Wert = WR0_ReadIoPortByte(Adr + 6)     ;"echten" Wert auslesen für Anzeige
          PWMDutyCycle = (Wert * 100) / 255
          SetGadgetText(34, Str(PWMDutyCycle))

        EndIf

        For i = 41 To 45                    ;OptionGadgets Fan-Divisor abfragen
          If GetGadgetState(i)
            FanDivisor = 1 << (i - 40)
            Break 
          EndIf
        Next 

        PWMDutyCycleSet = GetGadgetState(36)     ;Abfrage
      
      Until WaitWindowEvent() = #PB_Event_CloseWindow
      
      WR0_WriteIoPortByte($2E, $AA)         ;Beenden des Extended Function Mode für Winbond    
      WR0_DeinitializeOls()
    EndIf   
  EndIf
EndIf
[code]
Gruß
Helle

Edit: TextGadget(9) an AnzCore anpepasst.
Zuletzt geändert von Helle am 20.09.2009 16:40, insgesamt 1-mal geändert.
Benutzeravatar
Rings
Beiträge: 971
Registriert: 29.08.2004 08:48

Re: Super-I/O-Chip-Ermittlung/CPU-Core-Spannung

Beitrag von Rings »

Danke Helle,
Klappt hier mit meinem Asus-Board und Vista64.

Wichtig, funktioniert nur als Admin. resp. Admin-Rechten.
Rings hat geschrieben:ziert sich nich beim zitieren
Benutzeravatar
Falko
Admin
Beiträge: 3531
Registriert: 29.08.2004 11:27
Computerausstattung: PC: MSI-Z590-GC; 32GB-DDR4, ICore9; 2TB M2 + 2x3TB-SATA2 HDD; Intel ICore9 @ 3600MHZ (Win11 Pro. 64-Bit),
Acer Aspire E15 (Win11 Home X64). Purebasic LTS 6.0
Kontaktdaten:

Re: Super-I/O-Chip-Ermittlung/CPU-Core-Spannung

Beitrag von Falko »

Rings hat geschrieben:Danke Helle,
Klappt hier mit meinem Asus-Board und Vista64.

Wichtig, funktioniert nur als Admin. resp. Admin-Rechten.

@Helle
Ich habe lange nicht mehr in diesem Thread geschaut, aber Rings Bestätigung möchte ich noch ergänzen.
Die Inpoutx64 funktioniert bei mir nicht mehr unter Vista Ultimate 64, dafür aber die
WinRing0 mit PB 64-IDE und Adminmode.


Ergebnis bei meinem Asusboard P5QL - Pro
---------------------------
Sample
---------------------------
[DLL Version]

1.3.1.19

[Device Driver Version]

1.2.0.5

[Device Driver Type]

OLS_DRIVER_TYPE_WIN_NT_X64

[DLL Status]

OLS_DLL_NO_ERROR

[TSC]

63-32 31-0

00000455 BD74AF93

[MSR]

index 63-32 31-0

00000010: 00000455 BD74D68C

[I/O]

Beep 440Hz


---------------------------
OK
---------------------------
Sogar der Beep ist nicht zu überhören :mrgreen:

Gruß Falko
Bild
Win10 Pro 64-Bit, PB_5.4,GFA-WinDOS, Powerbasic9.05-Windows, NSBasic/CE, NSBasic/Desktop, NSBasic4APP, EmergenceBasic
Benutzeravatar
Falko
Admin
Beiträge: 3531
Registriert: 29.08.2004 11:27
Computerausstattung: PC: MSI-Z590-GC; 32GB-DDR4, ICore9; 2TB M2 + 2x3TB-SATA2 HDD; Intel ICore9 @ 3600MHZ (Win11 Pro. 64-Bit),
Acer Aspire E15 (Win11 Home X64). Purebasic LTS 6.0
Kontaktdaten:

Re: Super-I/O-Chip-Ermittlung/CPU-Core-Spannung

Beitrag von Falko »

Die Inpout64 als auch die Inpout64 funktionieren nun endlich bei mir unter Vista.
Ich habe mir alles herunter geladen, was zum 64-Bitsystem zu laden war. Dort ist ein Ordner
zwar für 32-bit und ein weiterer für 64-Bit. Interessant ist dabei die InstallDriver.exe.
Ich habe beide DLL's sowie die Sys-Dateien komplett mit der InstallDriver.exe in einem Ordner zusammen kopiert. Je nachdem unter welchen System ich die ausführe, werden beide Sys-Dateien nun korrekt kopiert und im System angemeldet. Somit ist es nun möglich
unter Vista X64 alles ohne administrative Zugriffe zu nutzen.

Mein aktuelles Versuchsprojekt mit Schieberegister (74165 und 74595) und LPT ist nun
wunderbar durchführbar. Wer es ausprobieren möchte, kann es hier von meiner HP herunterladen.

http://www.falko-pure.de/html/projekt_74165_595.htm

Und hier die Schaltung die ich damit nun Unter Vista Ultimat 64-Bit sowie auf Win2000 getestet habe.

Bild

Gruß Falko
Bild
Win10 Pro 64-Bit, PB_5.4,GFA-WinDOS, Powerbasic9.05-Windows, NSBasic/CE, NSBasic/Desktop, NSBasic4APP, EmergenceBasic
Charly
Beiträge: 39
Registriert: 20.02.2010 20:10

Re: Super-I/O-Chip-Ermittlung/CPU-Core-Spannung

Beitrag von Charly »

Hi,

wollte mir gerade winring0 von http://openlibsys.org/ laden, leider geschlossen :(
hat jemand einen Link wo es noch zu finden ist oder kann es mir mailen an:
************** vielen Dank!

vlg
Charly
vlG Charly / PB 5.42 x86
Charly
Beiträge: 39
Registriert: 20.02.2010 20:10

Re: Super-I/O-Chip-Ermittlung/CPU-Core-Spannung

Beitrag von Charly »

Habe es mittlerweile bokommen,
vielen Dank f. die zahlreichen Meldungen

Charly
vlG Charly / PB 5.42 x86
Antworten