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

VC++ .NET Discussion :

client OPC, librairie COM


Sujet :

VC++ .NET

  1. #1
    Membre à l'essai
    Inscrit en
    Novembre 2007
    Messages
    19
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Novembre 2007
    Messages : 19
    Points : 17
    Points
    17
    Par défaut client OPC, librairie COM
    Bonjour, je cherche a creer un client OPC pouvant se connecter a un serveur distant.

    j ai utilise ce code :
    http://lhcb-online.web.cern.ch/lhcb%...lienttutorial/

    que j ai ensuite modifie pour utiliser la librairie COM au lieu de DCOM (a terme ce client devra tourner sur windows mobile).
    (CoCreateInstance au lieu de CoCreateInstanceEx)
    Le client fonctionne si le serveur se trouve sur la meme machine.

    Lorsque le serveur n est plus sur la meme machine,
    CLSIDFromString ne fonctionne plus, donc je rentre le CLSID du serveur manuellement.

    Comme je ne peux plus utiliser CoCreateInstanceEx pour instancier un serveur distant, il faut que je precise le chemin vers le pc serveur dans le registre ( HKCR\AppID\{GUID2} ou GUID2 est le CLSID du serveur sous RemoteServerName) ce que je fait aussi "manuellement". Mais cela ne marche toujours pas.

    - Y a t il une autre solution pour regler le probleme de CLSIDFromString ?

    - Est il possible d instancier un serveur distant sachant que je doit obligatoirement utiliser CLSCTX_LOCAL_SERVER avec CoCreateInstance ou dois je utiliser une autre fonction?
    (???If this value is available, the activation request will be forwarded to the SCM on the designated host machine. It is worth noting that although the client application will only use the CLSCTX_LOCAL_SERVER flag when querying the activation, the request will be forwarded to the remote machine if no local servers are registered. ??? ca marche ou pas?)

    (CoGetClassObject semble realiser la meme operation.
    Mais l entete dans mon editeur est
    WINOLEAPI CoGetClassObject(
    IN REFCLSID rclsid,
    IN DWORD dwClsContext,
    IN LPVOID pvReserved,
    IN REFIID riid,
    OUT LPVOID FAR* ppv
    );
    et sur msdn :
    STDAPI CoGetClassObject(
    REFCLSID rclsid,
    DWORD dwClsContext,
    COSERVERINFO * pServerInfo,
    REFIID riid,
    LPVOID * ppv
    );
    pourquoi pServerInfo a t il disparu?)

    - Je suis preneur de tout lien qui pourrait me donner des details sur l utilisation de la COM librairie, je debute dans ce domaine.
    ( quel est la difference entre le IID et le CLSID de l OPC serveur ;
    quelle est la difference entre GUID1 et GUID2 sur ce site:
    http://www.codeproject.com/KB/COM/ma...?display=Print
    ??GUID1 represents the class ID of the COM class factory whilst GUID2 represents the COM Application ID used by the COM class factory?? )

    J apprecierai grandement votre aide sur l une de ces questions!!

  2. #2
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    Pour la différence sur les prototypes, ça ne fait pas vraiment de différence, car ledit pointeur doit toujours être NULL sous Windows Mobile.

    Je pense que tu cherches à faire quelque chose que Windows Mobile ne supporte vraiment pas. Tu n'arriveras sans doute pas à utiliser ce serveur COM de manière distante à moins peut-être de faire ton propre proxy, avec ton propre marshalling...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  3. #3
    Membre à l'essai
    Inscrit en
    Novembre 2007
    Messages
    19
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Novembre 2007
    Messages : 19
    Points : 17
    Points
    17
    Par défaut
    Merci.

    mais dans un premier temps j essaye tout simplement de faire marcher le client sur un pc, ce qui devrait etre faisable.

    - qd j utilise CoCreateInstanceEx comme ds le tutorial http://lhcb-online.web.cern.ch/lhcb%...lienttutorial/
    la fonction me retourne RPC Server unavailable (0x800706BA)
    -Je voudrais aussi savoir comment instantier le serveur distant, sans utiliser CoCreateInstanceEx,

Discussions similaires

  1. passer une chaine de caractère entre client et serveur COM
    Par ali.ensi dans le forum Visual C++
    Réponses: 7
    Dernier message: 28/03/2007, 17h30
  2. Développement d'un client OPC
    Par awane dans le forum WinDev
    Réponses: 3
    Dernier message: 05/09/2006, 20h46
  3. [Librairies] COM et WMI pour accéder à la base SAM de Windows Server
    Par knocc dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 24/04/2006, 16h43
  4. [Outils][VB.NET/C#] Comment créer un client OPC ?
    Par Angath dans le forum EDI/Outils
    Réponses: 4
    Dernier message: 07/10/2005, 16h41
  5. [COM] Impossible d'initialiser la librairie COM
    Par Neilos dans le forum Windows
    Réponses: 2
    Dernier message: 07/08/2005, 17h28

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