Pour Eric LAURENT ... et les autres (CoreTemp & Windev)

Le
Fredo
Salut,

Et non, on ne dort pas :)

J'essaye de communiquer avec CoreTemp pour afficher dans mon appli les
informations sur la température processeur.

Il y a a priori deux façons de faire, la première lire une zone mémoire
partagée et la deuxième faire appel à une dll.

La structure C que l'on doit charger est la suivante :

typedef struct core_temp_shared_data
{
unsigned int uiLoad[256];
unsigned int uiTjMax[128];
unsigned int uiCoreCnt;
unsigned int uiCPUCnt;
float fTemp[256];
float fVID;
float fCPUSpeed;
float fFSBSpeed;
float fMultipier;
char sCPUName[100];
unsigned char ucFahrenheit;
unsigned char ucDeltaToTjMax;
}

je l'ai traduite en WL comme ceci :


Str_CORE_TEMP_SHARED_DATA est une structure
uiLoad est un tableau de 256 entiers système
uiTjMax est un tableau de 128 entiers système
uiCoreCnt est un entier système
uniCPUCnt est un entier système
fTemp est un tableau de 256 réel sur 4 octets
fVid est un réel sur 4 octets
fCpuSpeed est un réel sur 4 octets
fFSBSpeed est un réel sur 4 octets
fMultiplier est un réel sur 4 octets
sCpuName est un tableau de 100 octets
ucFahrenheit est un octet
ucDeltaToTjMax est un octet
FIN

l'appel de la DLL ressemble à cela :
bool WINAPI fnGetCoreTempInfoAlt(CORE_TEMP_SHARED_DATA *pData);

que j'ai traduit par

lRes est un booléen = API("GetCoreTempInfo32.dll",
"fnGetCoreTempInfoAlt",CORE_TEMP_SHARED_DATA)

J'ai essayé de passer par un pointeur et de faire un transfert,
de passer directement &CORE_TEMP_SHARED_DATA etc je bloque, j'ai
toujours un plantage du WDTEST.EXE

Pour ce qui est de la zone mémoire, pareil, je n'y arrive pas.

Si quelqu'un avait une piste.

Merci d'avance,

Fred.
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Romain PETIT
Le #23702881
Après mure réflexion, Fredo a écrit :
Salut,



bonjour,

Si quelqu'un avait une piste.



Essaye :
- avec tableaux *fixes"
- entiers sur 4 octets (et non système, on ne sait jamais)
- chaine ASCIIZ sur 100 pour sCPUName ?
...

A+

--
Romain PETIT
contact : rompetit chez free fr
+-+ posté sur Usenet avec MesNews et non depuis un forum web +-+
news:fr.comp.developpement.agl.windev
http://www.mesnews.net/
http://fr.wikipedia.org/wiki/Newsgroup
Fredo
Le #23702951
Le 30/08/2011 16:11, Romain PETIT a écrit :
Après mure réflexion, Fredo a écrit :
Salut,



bonjour,

Si quelqu'un avait une piste.



Essaye :
- avec tableaux *fixes"
- entiers sur 4 octets (et non système, on ne sait jamais)
- chaine ASCIIZ sur 100 pour sCPUName ?
....

A+




Merci beaucoup, ça fonctionne, du coup, voici le bout de code qui va bien :


Bon dev :)

Fred


Str_CORE_TEMP_SHARED_DATA est une structure
uiLoad est un tableau fixe de 256 entiers sur 4 octets
uiTjMax est un tableau fixe de 128 entiers sur 4 octets
uiCoreCnt est un entier sur 4 octets
uniCPUCnt est un entier sur 4 octets
fTemp est un tableau fixe de 256 réel sur 4 octets
fVid est un réel sur 4 octets
fCpuSpeed est un réel sur 4 octets
fFSBSpeed est un réel sur 4 octets
fMultiplier est un réel sur 4 octets
sCpuName est une chaîne ASCIIZ sur 100
ucFahrenheit est un octet
ucDeltaToTjMax est un octet
FIN

CORE_TEMP_SHARED_DATA est un Str_CORE_TEMP_SHARED_DATA

SI ExeLancé("Core Temp.exe") ALORS
SI ChargeDLL("GetCoreTempInfo32.dll")=0 ALORS
Erreur(ErreurInfo())
FIN
lRes est un booléen = API("GetCoreTempInfo32.dll",
"fnGetCoreTempInfoAlt",&CORE_TEMP_SHARED_DATA) // Ouverture de la zone
de mémoire partagée
POUR i=1 _A_ CORE_TEMP_SHARED_DATA:uniCPUCnt
Trace("Core "+i+" => "+CORE_TEMP_SHARED_DATA:fTemp[i])
FIN

FIN
Publicité
Poster une réponse
Anonyme