le_nain27
Messages postés13Date d'inscriptionmercredi 8 septembre 2004StatutMembreDernière intervention19 octobre 2006
-
20 sept. 2005 à 09:05
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019
-
20 sept. 2005 à 19:10
Bonjour,
J'ai une documentation obtenue sur le site de nvidia concernant les fonctions contenues dans la DLL nvclp.dll.
Dans cette doc, j'ai ca:
<HR>
NvCplGetThermalSettings()
Function
Prototype
BOOL CDECL NvCplGetThermalSettings (IN UINT nWindowsMonitorNumber, OUT DWORD* pdwCoreTemp, OUT DWORD* pdwAmbientTemp, OUT DWORD* pdwUpperLimit);
Parameters In
UINT nWindowsMonitorNumber -- The display number shown on the Windows Display Properties->Settings page.
A value of 0 indicates the current primary Windows display device.
DWORD* must be a valid pointer --
pdwCoreTemp -- GPU temperature in degrees Celsius.
pdwAmbientTemp -- Ambient temperature in degrees Celsius.
pdwUpperLimit -- Upper limit of the GPU temperature specification.
Return Values
True on success.
False on failure.
<HR>
J'ai essayé de l'utiliser dans VB, je ai donc mis dans un module:
Public Declare Function NvCplGetThermalSettings Lib "nvcpl.dll" (ByVal nWindowsMonitorNumber As Long, _
ByRef pdwCoreTemp As Long, _
ByRef pdwAmbientTemp As Long, _
ByRef pdwUpperLimit As Long) As Long
Seulement, quand je l'appelle, j'ai une erreur m'indiquant que je n'ai pas respecté la convention d'appel de la procédure.
Où me suis-je trompé ?
A voir également:
Appel fonction d'une DLL (NvCplGetThermalSettings de nvcpl.dll)
PCPT
Messages postés13272Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention 3 février 201847 20 sept. 2005 à 09:44
salut,
tu t'es peut-être trompé dans le fait que c'est un Get.
autrement dit, tu dois avoir un type quelque part, genre
private type tNvidiaThermal
pdwCoreTemp As Long
pdwAmbientTemp As Long
pdwUpperLimit As Long As Long
end type
pour déclarer
Public Declare Function NvCplGetThermalSettings Lib "nvcpl.dll" _
(ByVal nWindowsMonitorNumber As Long, _
ByRef pdwValuesCoreTemp As tNvidiaThermal) As Long
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019 20 sept. 2005 à 10:59
PCPT > je ne vois aucune structue à passer ici, seulement 4 params 32 bits dont les 3 derniers sont des pointeurs (Byref en VB).
Par contre il est impossible de s'en servir direct en VB car ne respecte pas le standard d'appel API (__stdcall), la fonction demande que ce soit l'appelant qui dépile les params, ce que VB ne fera pas.
le_nain27
Messages postés13Date d'inscriptionmercredi 8 septembre 2004StatutMembreDernière intervention19 octobre 2006 20 sept. 2005 à 11:33
Ok c'est clair.
Il va donc falloir que je :
- trouve un compilateur C sous windows
- fasse le code source d'une dll, qui en plus appelle une autre dll (et avec mes compétences en C ca va pas être trivial ^^)
le_nain27
Messages postés13Date d'inscriptionmercredi 8 septembre 2004StatutMembreDernière intervention19 octobre 2006 20 sept. 2005 à 15:25
Merci Darksidious pour l'IDE C++.
Par contre je galere un peu pour la réalisation de la dll, quelqu'un aurait un bon exemple d'importation d'une fonction d'une dll quand on a son prototype mais pas le .lib ni le .h de la dll ?
ensuite LoadLibray sur la dll nvidia, GetProcAddress sur le nom de la fonction
NVGETTHERM pfunc;
hdll = LoadLibray(nomDllNvidiaIci);
if(!hdll) PAS BON ON SORT
pfunc = GetProcAddress(hdll, "NomFonctionNvidia");
if(!pfunc) PAS BON ON SORT