Page 1 sur 2

Fréquence du processeur

Publié : mer. 02/févr./2005 22:25
par Le Soldat Inconnu
un petit code qui retourne la fréquence du processeur

Code : Tout sélectionner

Procedure.l GetProcessorFrequency() ; Retourne la fréquence du processeur
  Protected Resultat, Lib
  Structure PROCESSOR_POWER_INFORMATION
    Number.l ; Numéro du processeur
    MaxMhz.l ; Fréquence max en mhz de la configuration actuelle
    CurrentMhz.l ; Fréquence actuelle
    MhzLimit.l ; Fréquence max en mhz supportée par le processeur
    MaxIdleState.l
    CurrentIdleState.l
  EndStructure
  Lib = OpenLibrary(#PB_Any, "PowrProf.dll")
  If Lib
    If CallFunction(Lib, "CallNtPowerInformation", 11, 0, 0, lpOutputBuffer.PROCESSOR_POWER_INFORMATION, SizeOf(PROCESSOR_POWER_INFORMATION)) = 0
      Resultat = lpOutputBuffer\MaxMhz
    EndIf
    CloseLibrary(Lib)
  EndIf
  ProcedureReturn Resultat
EndProcedure

MessageRequester("Information", "Fréquence du processeur :" + Chr(10) + Str(GetProcessorFrequency()) + " Mhz", 64)
Par contre, j'aimerais savoir si ça tourne bien chez vous (sur quel OS, quel processeur, si bi-processeur ou pas)
Merci

Publié : mer. 02/févr./2005 22:32
par nico
Pour mon Athlon 1700, il me retourne 1466Mhz, mais sur les Athlon "1700" est un indice comparatif qui donne une équivalence aux processeurs d'intel.

Publié : mer. 02/févr./2005 22:37
par hardy
Me retourne 1600 Mhz pour mon centrino 1.6Ghz. Ca a l'air correct! (XP Pro)

Publié : mer. 02/févr./2005 23:27
par Le Soldat Inconnu
Pour ma part, j'ai testé sur AMD Athlon 900 (avec en retour 900 mhz) et sur AMD Athlon XP 2000+ (avec en retour 1664 mhz pour 1666 normalement). Les 2 PC sont sous XP pro

Publié : jeu. 03/févr./2005 7:07
par julien
2418 pour un PIV 2400 Mhz donc OK pour Moi sous XP pro, je regarderai ce soir sous 2K

Publié : jeu. 03/févr./2005 10:42
par Heis Spiter
1195Mhz -> Celeron 1,2Ghz sous XP Pro, tout est normal ;).

Publié : jeu. 03/févr./2005 11:40
par Jacobus
Me retourne 0 Mhz pour mon PIII 1Ghz :(

Bouarf, je retourne me coucher,
je me sens pas bien tout d'un coup #morning

Publié : jeu. 03/févr./2005 12:01
par Le Soldat Inconnu
sur quel OS ?

Publié : jeu. 03/févr./2005 12:06
par Jacobus
Un os à moëlle : WinMe

Publié : jeu. 03/févr./2005 13:01
par Le Soldat Inconnu
Tu peux me dire si c'est l'ouverture de la lib ou le callfunction qui échoue avec ceci (en mode debug) merci

Code : Tout sélectionner

Procedure.l GetProcessorFrequency() ; Retourne la fréquence du processeur 
  Protected Resultat, Lib 
  Structure PROCESSOR_POWER_INFORMATION 
    Number.l ; Numéro du processeur 
    MaxMhz.l ; Fréquence max en mhz de la configuration actuelle 
    CurrentMhz.l ; Fréquence actuelle 
    MhzLimit.l ; Fréquence max en mhz supportée par le processeur 
    MaxIdleState.l 
    CurrentIdleState.l 
  EndStructure 
  Lib = OpenLibrary(#PB_Any, "PowrProf.dll") 
  If Lib 
    Debug "OK Lib"
    If CallFunction(Lib, "CallNtPowerInformation", 11, 0, 0, lpOutputBuffer.PROCESSOR_POWER_INFORMATION, SizeOf(PROCESSOR_POWER_INFORMATION)) = 0 
      Resultat = lpOutputBuffer\MaxMhz 
      Debug "OK Fonction"
    EndIf 
    CloseLibrary(Lib) 
  EndIf 
  ProcedureReturn Resultat 
EndProcedure 

MessageRequester("Information", "Fréquence du processeur :" + Chr(10) + Str(GetProcessorFrequency()) + " Mhz", 64)

Publié : jeu. 03/févr./2005 14:04
par Jacobus
En effet, le debugger confirme Lib OK mais l'appel de la fonction ne se fait pas.

Publié : jeu. 03/févr./2005 18:48
par Le Soldat Inconnu
Pourtant, elle doit marcher sur 98, ME, 2000 et XP :? zut alors

tu peux me donner la valeur retournée pas le callfunction STP (un petit coup de debug dessus)

Publié : jeu. 03/févr./2005 20:22
par erix14
2737 Mhz -> P IV 2.4Ghz XP familiale SP2...
Overclocking à 2.7 Ghz :D :D :D

Publié : jeu. 03/févr./2005 20:24
par Dräc
Meme probleme que pour Jacobus, cette fois avec 98SE et un PIII 500Mhz.

La valeur retournée par le callfunction et la suivante:

OK Lib
-1073741811

Publié : ven. 04/févr./2005 10:57
par Jacobus
De quelle manière tu mets un coup de Debug sur Callfunction ?
je n'obtiens qu'un zéro pointé à mes tentatives.

je suis allé vérifier si elle était bien dans la lib et c'est Ok, c'est la première des 24 qui s'y trouvent. Par contre pour des raisons de sécurité et de mémoire, j'ai désactivé certaines fonctions comme le chargement de power profil au démarrage du système. n 'y aurait-il pas un lien ?