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

Développement Mobile .NET Discussion :

Problème de connexion avec rapi.dll : CeRapiInitEx sous Win7


Sujet :

Développement Mobile .NET

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7
    Points : 9
    Points
    9
    Par défaut Problème de connexion avec rapi.dll : CeRapiInitEx sous Win7
    Bonjour à tous, je suis entrain de travailler sur la portabilité d'une application vers Windows Seven et à ce sujet je suis face un problème bien embarrassant lorsque j'essaye de me connecter à un PDA sous WinCE depuis un PC sous Win7 :

    Je possède un thread qui tente d'établir une connexion avec un PDA via rapi.dll.
    Tant que le PDA est physiquement connecté (disons "branché"), tout va bien, j'arrive à établir la connexion.
    Mais si je tente d'établir la connexion quand le PDA est débranché et que j'attends la fin du thread, alors je n'arrive plus jamais à rétablir la connexion par la suite : CeRapiInitEx me renvoie E_INVALIDARG à chaque tentative avec un handle égal à 0.
    Détail intéressant : si je débranche puis rebranche le PDA en restant dans le même thread alors la connexion s'établit.

    Je viens de réaliser des tests sous Windows XP et j'ai découvert que CeRapiInitEx retourne toujours un résultat "positif" et me fournit un handle même si le PDA n'est pas branché!
    Il ne me reste ensuite plus qu'à tenter une connexion avec WaitForSingleObject(pHandle, pTimeout) et à tester le retour... ce qui m'arrange grandement!

    Ma question est donc la suivante : pourquoi CeRapiInitEx se comporte-t-il différemment sous Windows Xp et sous Windows Seven ? Comment y remédier?

    Pour info :
    - Ce problème intervient sous Windows 7 (32 et 64 bits) mais pas sous Windows XP 32 bits.
    - "PDA branché" = PDA reconnu par Windows (le gestionnaire Windows Mobile indique que le périphérique est connecté)
    - J'ai simplifié ma procédure au maximum, il ne reste que la méthode qui semble poser problème : CeRapiInitEx.

    Définition de RAPIINT :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    struct RAPIINIT{int cbsize; IntPtr heRapiInit; uint hrRapiInit;}
    Import de rapi.dll :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    [DllImport("rapi.dll", CharSet = CharSet.Unicode)] 
    static extern uint CeRapiInitEx(ref RAPIINIT pRapiInit)
    Log sous Windows XP 32 bits que le PDA soit branché ou pas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    CeRapiInitEx(ref rapiInit) = S_OK
     - rapiInit.hrRapiInit = S_OK
     - rapiInit.heRapiInit = 1456
    Log du problème sous Windows Seven 64 bits
    1. le PDA est branché.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    a. Début du thread
    b. CeRapiInitEx(ref rapiInit) = S_OK
     - rapiInit.hrRapiInit = S_OK
     - rapiInit.heRapiInit = 1456
    d. CeRapiUninit()
    e. Le thread se termine.
    2. le PDA est débranché.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    a. Début du thread
    b. CeRapiInitEx(ref rapiInit) = S_OK
     - rapiInit.hrRapiInit = E_FAIL
     - rapiInit.heRapiInit = 1628
    c. CeRapiUninit()
    d. Le thread se termine.
    3. le PDA est branché.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    a. Début du thread
    b. CeRapiInitEx(ref rapiInit) = E_INVALIDARG
     - rapiInit.hrRapiInit = S_OK
     - rapiInit.heRapiInit = 0
    c. CeRapiUninit()
    d. Le thread se termine.
    A partir de là et à chaque tentative, CeRapiInitEx retourne toujours le même E_INVALIDARG et un handle égal à 0 (valeur invalide...)

  2. #2
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7
    Points : 9
    Points
    9
    Par défaut
    Aprés moult tests il semblerait que le fait que chaque tentative de connexion est réalisée dans un thread différent soit hautement impliqué dans mon problème!

    Si je fais plusieurs tentatives de connexion dans le même thread, en branchant et débranchant aléatoirement le PDA, alors la connexion finit par se réaliser !

Discussions similaires

  1. ProC: problème de connexion avec ora*.dll
    Par lupien1 dans le forum Interfaces de programmation
    Réponses: 1
    Dernier message: 27/05/2014, 14h16
  2. Problème de connexion à une BDD ASA 7 sous Win7
    Par Mirande dans le forum Sybase
    Réponses: 0
    Dernier message: 28/12/2012, 17h13
  3. problème avec une DLL créée sous matlab
    Par orang dans le forum C#
    Réponses: 3
    Dernier message: 24/04/2011, 14h29
  4. Réponses: 0
    Dernier message: 20/09/2010, 18h21
  5. Problème de lien avec wsock32.dll sous g++ (mingw32)
    Par TheShadow dans le forum Autres éditeurs
    Réponses: 3
    Dernier message: 11/04/2006, 14h43

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