我注意到WCF的命名管道地址
net.pipe://localhost/mynamedpipe
和 Windows API 的
\\.\pipe\mynamedpipe
不要碰撞。这是为什么?我怎样才能让它们指向同一个管道?
最佳答案
没有记录在案的方法。经过几次测试,我得出以下结论:
如果您有一个 WCF 服务器和一个 Win32 C++ 客户端,最后一个将把第一个地址视为 UUID,格式如下:
12345678-1234-1234-1234-123456789abc
而且这个 UUID 看起来是随机的,因为每次启动服务器时它都会针对相同的 WCF 地址发生变化。
我不知道 WCF 客户端是否可以看到具有 GUID 格式地址的 Win32 C++ 命名管道服务器,但我敢肯定,如果可以的话,服务器将不得不实现由WCF.
此类协议(protocol)的文档作为对 my previous question on this subject. 的回答提供
编辑 进一步的研究表明管道地址存储在 FileMapping 中。该入口地址又是 NetNamedPipe 地址规范化版本的 base64 编码哈希。
关于wcf - 如何使 WCF 命名管道地址等于 WinApi 管道地址?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3789807/