IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

MFC Discussion :

DCOM Problem access memory


Sujet :

MFC

  1. #1
    Futur Membre du Club
    Inscrit en
    Mars 2004
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 16
    Points : 8
    Points
    8
    Par défaut DCOM Problem access memory
    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 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CComObject<CH2ADServerEventsSink>::CreateInstance(&m_pSink);
    le debug me dit qu'il y a un probleme à ce niveau :
    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'en ai donc conclu que l'argument de la fonction est nulle.
    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:
    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);
    tout me semble correcte..
    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

  2. #2
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Points : 17 323
    Points
    17 323
    Par défaut
    salut,
    ton projet win32 initialise les MFC ?

  3. #3
    Futur Membre du Club
    Inscrit en
    Mars 2004
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 16
    Points : 8
    Points
    8
    Par défaut
    Dans le projet console je ne me sers aucunement des MFC.
    j'ai juste inclu le support ATL et MFC à la création du projet.

  4. #4
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Points : 17 323
    Points
    17 323
    Par défaut
    CString fait partie des MFC ...

  5. #5
    Futur Membre du Club
    Inscrit en
    Mars 2004
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 16
    Points : 8
    Points
    8
    Par défaut
    autant pour moi j'entendai MFC comme interface graphique....
    Donc oui j'utilise les MFC.
    La je suis completement perdu.

    PS: je peux envoyer mon projet en rar si cela peut aider à comprendre le probleme dans sa globalité.

  6. #6
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Points : 17 323
    Points
    17 323
    Par défaut
    ton projet console MFC doit initialiser les MFC exemple:
    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
     
    // Seul et unique objet application
     
    CWinApp theApp;
     
    using namespace std;
     
    int _tmain(int argc, TCHAR* argv[], TCHAR* envp[])
    {
        int nRetCode = 0;
     
        // Initialise MFC et affiche un message d'erreur en cas d'échec
        if (!AfxWinInit(::GetModuleHandle(NULL), NULL, ::GetCommandLine(), 0))
        {
            // TODO : modifiez le code d'erreur selon les besoins
            _tprintf(_T("Erreur irrécupérable : l'initialisation MFC a échoué\n"));
            nRetCode = 1;
        }
        else
        {
            // TODO : codez le comportement de l'application à cet emplacement.
        }
     
        return nRetCode;
    }

  7. #7
    Futur Membre du Club
    Inscrit en
    Mars 2004
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 16
    Points : 8
    Points
    8
    Par défaut
    Je vous ai fait parvenir par MP le projet en entier.
    Les MFC sont bien initialisées et à l'initialisation j'appel mon constructeur de classe qui doit créer l'objet DCOM et se déclarer auprés du serveur.

  8. #8
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Points : 17 323
    Points
    17 323
    Par défaut
    bon je ne suis pas un spécialiste de ATL et com mais:
    est une variable globlale
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    __declspec(selectany) CAtlModule * _pAtlModule
    
    elle doit donc être initialisée ,
    il doit donc te manquer l'initialisation de la partie ATL ?

Discussions similaires

  1. Violation access memory
    Par breezer911 dans le forum C++
    Réponses: 8
    Dernier message: 05/04/2007, 09h26
  2. Probleme Access 2003
    Par tibmuse dans le forum Access
    Réponses: 5
    Dernier message: 17/05/2006, 23h08
  3. probleme access 2003
    Par party_boy dans le forum Access
    Réponses: 16
    Dernier message: 26/04/2006, 08h57
  4. [SIGBUS] Cannot Access Memory apres un Malloc?
    Par predacktor dans le forum C
    Réponses: 5
    Dernier message: 18/03/2006, 17h11
  5. Probleme Access
    Par jmjmjm dans le forum Langage SQL
    Réponses: 2
    Dernier message: 16/12/2005, 21h23

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo