2012-10-21 3 views
0

Je ne sais pas pourquoi cette pipe n'est pas valide. tout me semble bien. Ceci est juste un test, je n'écris pas ou ne lis pas. Tout le monde peut me dire ce qui ne va pas?Windows Named Pipe est invalide

#include <windows.h> 
#include <stdio.h> 
#include <tchar.h> 

#define BUFSIZE 4096 

int main() 
{ 
    HANDLE hPipe; 

    LPTSTR Pipename = TEXT("\\\\.\\pipe\\mypipe"); 

    printf("Start Server\n"); 

    for(;;) 
    { 
     hPipe = CreateNamedPipe(Pipename, 
           PIPE_ACCESS_DUPLEX, 
           PIPE_TYPE_MESSAGE | PIPE_READMODE_MESSAGE | PIPE_WAIT, 
           PIPE_UNLIMITED_INSTANCES, 
           BUFSIZE, 
           BUFSIZE, 
           NMPWAIT_USE_DEFAULT_WAIT, 
           NULL); 

     if (hPipe == INVALID_HANDLE_VALUE) 
     { 
      printf("CreatePipe failed"); 
      return 0; 
     } 

     CloseHandle(hPipe); 
    } 
    return 1; 
} 
+1

Utilisez 'GetLastError()' pour déterminer le motif de l'échec. – hmjd

+0

Aussi, pourquoi la boucle infinie? L'appel à CreateNamedPipe réussit-il une ou plusieurs fois avant d'échouer? –

Répondre

0

Sans plus de détails sur l'erreur, il est difficile d'aider. Toutefois, en règle générale, créez le serveur à l'aide de CreateNamedPipe, puis utilisez ConnectNamedPipe. Côté client, vous pouvez maintenant utiliser CreateFile, que ConnectNamedPipe attend du côté serveur.