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

Windows Discussion :

Problem avec CallNamedPipe


Sujet :

Windows

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2007
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Septembre 2007
    Messages : 55
    Par défaut Problem avec CallNamedPipe
    Bonjour,

    Concernant la fonction CallNamedPipe, il est dit quelle est équivalent à CreateFile en mode GENERICREAD | GENERICWRITE, donc je comprend qu'on peut soit faire un ecriture une lecture ou les deux.

    Peut - on utiliser CallNamedPipe seulement pour appeler une instance d'un tube de message et seulement écrire?

    http://msdn.microsoft.com/en-us/libr...44(VS.85).aspx

    Avec le code ci dessous j'ai une erreur 5 : Access is denied.

    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
    void DispatcherRoot::sendData(const std::string& aRootName, const std::string& aData,void* aPlatformData)
    {
    	CString lPipeName("\\\\.\\pipe\\");
    	lPipeName += aRootName.c_str();
    
    	char str[BUFSIZE];
    	memcpy(str,aData.c_str(),BUFSIZE);
    
    	DWORD lbitread;
    	char* buffread[BUFSIZE];
    	bool lCall = CallNamedPipe(
    				lPipeName,
    				(void*)str,
    				BUFSIZE,
    				buffread,
    				BUFSIZE,
    				&lbitread,
    				NMPWAIT_USE_DEFAULT_WAIT);
    
    
    	
    	if(!lCall ) 
    	{
    		LCTrace("Call Named Pipe failed, last error : %d",GetLastError());
    		return;
    	}
    Je passe un buffer buffread pour la lecture pour ne pas mettre NULL et 0.

    quelqu'un a une idée??

    Robux

  2. #2
    Membre averti
    Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2007
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Septembre 2007
    Messages : 55
    Par défaut
    C'est bon j'ai trouvé!!

    La fonction CallNamedPipe return "true" seulement si on appel l'instance du pipe en question - créé par la fonction CreateNamedPipe - avec comme paramètre PIPE_ACCESS_DUPLEX. Or j'utilise des pipe en PIPE_ACCESS_INBOUND.


    Robux

Discussions similaires

  1. Probleme avec la copie des surfaces
    Par Black_Daimond dans le forum DirectX
    Réponses: 3
    Dernier message: 09/01/2003, 10h33
  2. Problèmes avec le filtrage des ip
    Par berry dans le forum Réseau
    Réponses: 9
    Dernier message: 30/12/2002, 07h51
  3. probleme avec la touche F10
    Par b.grellee dans le forum Langage
    Réponses: 2
    Dernier message: 15/09/2002, 22h04
  4. Probleme avec fseek
    Par Bjorn dans le forum C
    Réponses: 5
    Dernier message: 04/08/2002, 07h17
  5. [Kylix] probleme avec un imagelist
    Par NicoLinux dans le forum EDI
    Réponses: 4
    Dernier message: 08/06/2002, 23h06

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