2012-10-21 143 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正在服務器端等待。