NamedpipeClientStream incapable de se connecter, continue à expirer

J’ai un serveur nommé Namedpipeserver basé principalement sur:
http://msdn.microsoft.com/en-us/library/windows/desktop/aa365588(v=vs.85).aspx
Lorsque j’essaie de me connecter depuis un client .NET en utilisant ce code:

NamedPipeClientStream clientPipe = new NamedPipeClientStream(".", "\\\\.\\pipe\\TTCUIHELPER_SEND_TTC_RECEIVE",PipeDirection.Out); try { if (clientPipe != null) { clientPipe.Connect(5000); if (clientPipe.IsConnected == true) { byte[] bytes = pm.GetMessageData(); clientPipe.Write(bytes, 0, bytes.Length); clientPipe.Flush(); clientPipe.Dispose(); clientPipe.Close(); } } } catch (Exception Ex) { System.Windows.MessageBox.Show(Ex.Message); } 

Ensuite, la connexion expire toujours. La chose étrange est que si j’essaie d’écrire un client de test en utilisant CPP en tant que tel:

 LPTSTR lpszPipename = TEXT("\\\\.\\pipe\\TTCUIHELPER_SEND_TTC_RECEIVE"); const TCHAR* lpvMessage=L"QQQQ"; HANDLE hPipe = CreateFile( lpszPipename, // pipe name GENERIC_READ | // read and write access GENERIC_WRITE, 0, // no sharing NULL, // default security atsortingbutes OPEN_EXISTING, // opens existing pipe 0, // default atsortingbutes NULL); // no template file // Break if the pipe handle is valid. DWORD cbWritten; DWORD cbToWrite = (lstrlen(lpvMessage)+1)*sizeof(TCHAR); _tprintf( TEXT("Sending %d byte message: \"%s\"\n"), cbToWrite, lpvMessage); BOOL fSuccess = WriteFile( hPipe, // pipe handle lpvMessage, // message cbToWrite, // message length &cbWritten, // bytes written NULL); // not overlapped if ( ! fSuccess) { _tprintf( TEXT("WriteFile to pipe failed. GLE=%d\n"), GetLastError() ); return -1; } 

Cela fonctionne parfaitement. Que pourrais-je faire de mal que cela fonctionne de CPP mais pas de .NET?

Perdez simplement le préfixe de tuyau de votre nom de tuyau, c’est-à-dire utilisez uniquement le nom lui-même:

 "TTCUIHELPER_SEND_TTC_RECEIVE" 

La classe .NET NamedPipeClientStream ajoute le préfixe pour vous lorsqu’il appelle l’API Windows WriteFile en interne.