Iunknown

neophenix83 Messages postés 63 Date d'inscription samedi 9 avril 2005 Statut Membre Dernière intervention 4 mai 2007 - 3 août 2006 à 10:30
neophenix83 Messages postés 63 Date d'inscription samedi 9 avril 2005 Statut Membre Dernière intervention 4 mai 2007 - 7 août 2006 à 16:55
Bonjour à tous,

Je vais avoir besoin d'un petit coup de main.

Voilà, je veux creer un objet RTCClient, à l'aide de son CLSID. Je fais donc, un :

    hr = CoCreateInstance(
        CLSID_RTCClient,
        NULL,
        CLSCTX_INPROC_SERVER,
        IID_IRTCClient,
        (LPVOID *)&g_pRTCClient
        );

Seulement, en valeur de retour, pour hr, j'ai "le module spécifié est introuvable".
Je regarde dans ma base de registre. Le CLSID est bien présent, à la bonne valeur.
En fait, j'ai une clé, avec un sous repertoire InprocServer32 qui contient une reference à rtcclient.dll

Je suppose donc que le module introuvable, est celui là ?!

Est ce que je me trompe?
Dois je faire quelquechose avant de faire le cocreateinstance?!? Est ce que l'interface Iunknown doit apparaitre quelque part dans la base de registre ? car là, elle ne semble pas y etre.

pouvez vous m'aider SVP.

d'avance merci.

5 réponses

nightlord666 Messages postés 746 Date d'inscription vendredi 17 juin 2005 Statut Membre Dernière intervention 23 mai 2007 10
3 août 2006 à 10:44
Tu a bien placé rtcclient.dll au bon endroit (l'endroit spécifié dans le registre) ?

//Libère ma mémoire que j'ai utilisé
this->GetCurrentConversation()->FreeAllocatedMemory(REASON_UNUSED);
0
racpp Messages postés 1909 Date d'inscription vendredi 18 juin 2004 Statut Modérateur Dernière intervention 14 novembre 2014 17
3 août 2006 à 16:44
Salut,
Oui, le module est bien rtcclient.dll. Cette erreur arrive quand le système essaie de charger une dll mais n'y arrive pas. Soit la dll est introuvable à l'endroit spécifié, soit elle est corrompue.
La seule chose que du dois ajouter avant CoCreateInstance() est CoInitialize(). D'ailleurs, la valeur de retour de CoCreateInstance() te le signalerait en cas d'oubli. La valeur de hr correspondrait  à "CoInitialize non appelée".
L'interface IUnknown est héritée par toutes les interfaces COM. Elle est donc obligatoirement présente sur ton système. La méthode Release() utilisée par tous les objets COM appartient à IUnknown. Voici la clé contenant son CLSID :
HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Interface\{00000000-0000-0000-C000-000000000046}
0
neophenix83 Messages postés 63 Date d'inscription samedi 9 avril 2005 Statut Membre Dernière intervention 4 mai 2007
3 août 2006 à 19:15
L'endroit spécifié dans le registre ?!
Comment je le vois moi l'endroit spécifié dans le registre ?

Sinon, pour IunKnoww, je dois pas avoir de CLSID :
HKEY_CLASSES_ROOT\CLSID\{00000000-0000-0000-C000-000000000046}   ??????

J'ai pas pensé de preciser que je travaille sur WinCE, mais bon, apres, au niveau du fonctionnement base de registre, c'est pareil....

Merci pour vos réponses.
0
racpp Messages postés 1909 Date d'inscription vendredi 18 juin 2004 Statut Modérateur Dernière intervention 14 novembre 2014 17
3 août 2006 à 19:57
Le CLSID de IUnknown ne se trouve pas dans la clé HKEY_CLASSES_ROOT\CLSID\. Il se trouve plutôt dans la clé :
HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Interface\

En tous cas, ton problème ne vient pas de là. IUnknown est indispensable pour le bon fonctionnement du système.

Vérifie quertcclient.dll est présente et s'enregistre normalement.
Je t'envoie mon adresse email par message privé. Envoie moi  cette dll  pour la tester.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
neophenix83 Messages postés 63 Date d'inscription samedi 9 avril 2005 Statut Membre Dernière intervention 4 mai 2007
7 août 2006 à 16:55
En fait, je regarde sur mon WINCE 5.0 si IunKnown est présent, mais en fait, il n'y a pas de clé:
HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Interface\{00000000-0000-0000-C000-000000000046}

Alors je ne sais pas bien, comment mettre IunKnown actif sur mon WinCE ?!?

D'avance merci.

PS: je t'ai ecris un Mail, ca sera plus simple. merci.
0
Rejoignez-nous