none
Problème "Point d'entrée introuvable" RRS feed

  • Question

  • Bonjour;

    j'ai un module dans lequel j'utilise la Fonction "RegisterPowerSettingNotification" pour recuperer les notifications Power management sur vista.

    avant l'appel de cette methode je fais un test sur le type d'OS pour ne pas appler cette methode que si je me trouve bien sur un vista.

    malgré ça je recoi le message d'erreur suivant au demarrage lorsque je lance le module sur un XP.
    "Point d'entrée introuvable : le point d'entrée de procedure RegisterPowerSettingNotification est introuvable dans la biblio de liasons dymnamique USER32.dll"

    y a t'il une façon d'empécher le chargement de cette fonction lorsque je me trouve sous un OS autre que vista ?

    mardi 14 juillet 2009 12:43

Réponses

  • Il ne faut pas linker statiquement avec la fonction RegisterPowerSettingNotification, car le programme ne pourra pas se lancer si user32.dll ne contient pas la fonction. Il faut effectuer un chargement dynamique de user32.dll, puis rechercher la fonction RegisterPowerSettingNotification dans user32.dll, en utilisant un pointeur de fonction, avec un code du style :
    if (winVista)
    {
         hDll = LoadLibrary("user32.dll");
         ptrFuncPower = GetProcAddress(hDll, "RegisterPowerSettingNotification");
         (*ptrFuncPower)(hRecipient, PowerSettingGuid, flags);
    }

    Voir "using runtime dynamic linking" : http://msdn.microsoft.com/en-us/library/ms686944(VS.85).aspx
    mercredi 29 juillet 2009 21:57
    Auteur de réponse