2012-10-21 45 views
0

我不知道为什么此管道无效。一切对我来说都很好。这只是一个测试,我不写或读它。任何人都可以告诉我什么是错的?Windows命名管道无效

#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

使用'GetLastError()'来确定失败原因。 – hmjd

+0

另外,为什么无限循环?在失败之前,对CreateNamedPipe的调用是否成功一次或多次? –

回答

0

没有关于错误的更多细节,它很难提供帮助。但是,通常使用CreateNamedPipe创建服务器,然后使用ConnectNamedPipe。 在客户端,您现在可以使用CreateFile,ConnectNamedPipe正在服务器端等待。