Bonjour,
Je viens vous demander un peu d'aide car aprés 3jours de recherche infructueuse je n'arrive vraiment pas à résoudre mon problème.
Je disposais d'une application MFC avec une interface DCOM qui récupere des messages provenant d'un serveur et les affiche dans une boite de dialogue.
Tout fonctionne.
J'ai voulu créer une application console win32 pour ne plus avoir cette affichage car je n'en ai plus besoin.
Aprés étude du code source, j'ai donc créé une application win32 console
et modifier le code mais voila j'ai un gros problème:
Lorsque j'execute le programme mode debug ou release, il s'arrete avec une erreur : problem access memory lorsqu'il execute cette ligne :
le debug me dit qu'il y a un probleme à ce niveau :
Code : Sélectionner tout - Visualiser dans une fenêtre à part CComObject<CH2ADServerEventsSink>::CreateInstance(&m_pSink);
j'en ai donc conclu que l'argument de la fonction est nulle.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 typedef Base _BaseClass; CComObject(void* = NULL) throw() { _pAtlModule->Lock(); }
J'ai effectué plusieurs debug en essayant de voir les differentes valeurs et en les comparant avec le projet MFC qui fonctionne mais tout est identique....
Voici le debut de mon code ou je crée l'objet DCOM:
tout me semble correcte..
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37 CString m_sFileShare; m_sFileShare="\\\\svr\\srv"; CString sMachine = m_sFileShare; sMachine = sMachine.Right(sMachine.GetLength() - 2); sMachine = sMachine.Left(sMachine.Find('\\')); ServerInfo.dwReserved1 = 0; ServerInfo.dwReserved2 = 0; ServerInfo.pAuthInfo = NULL; USES_CONVERSION; ServerInfo.pwszName = A2W(sMachine); MULTI_QI Results; Results.pIID = &IID_IUnknown; Results.pItf = NULL; Results.hr = S_OK; hr = CoInitializeEx(NULL, COINIT_APARTMENTTHREADED); hr = CoInitializeSecurity(NULL, -1, NULL, NULL, RPC_C_AUTHN_LEVEL_NONE, RPC_C_IMP_LEVEL_IDENTIFY, NULL, EOAC_NONE, NULL); hr = CoCreateInstanceEx( CLSID_H2ADServer, NULL, CLSCTX_LOCAL_SERVER | CLSCTX_REMOTE_SERVER, &ServerInfo, 1, &Results ); sMachine.ReleaseBuffer(); if (Results.hr == S_OK) { m_pH2ADServer = Results.pItf; CComObject<CH2ADServerEventsSink>::CreateInstance(&m_pSink); CComPtr<IUnknown> pUnk = m_pSink; // client declares itself to the server hr = AtlAdvise(m_pH2ADServer, pUnk, DIID__IH2ADServerEvents, &m_dwCookie);
Cela vient-il de mon projet et d'un manque d'include...
J'ai pourtant tout inclu comme le projet MFC...
Je me retrouve dans l'impasse sans savoir comment faire.
J'ai pris plusieurs tutoriaux sur le DCOM/ATL mais rien a faire.
La parti Serveur est déja créée.
Merci de votre aide.
A bientot
Metek
Partager