【发布时间】:2017-05-31 08:48:56
【问题描述】:
我可以通过CreateNamedPipe 在 Windows 中创建命名管道。
p = win32pipe.CreateNamedPipe(r'\\.\pipe\test_pipe',
win32pipe.PIPE_ACCESS_DUPLEX,
win32pipe.PIPE_TYPE_MESSAGE | win32pipe.PIPE_WAIT,
1, 65536, 65536,300,None)
这是一个类似文件的对象,与 Linux FIFO 相比,它并不存在于主文件系统中,而是存在于一个特殊的内核命名空间中(这就是 \\.\pipe 的用途)。现在,我有一个位于//./xillybus_read_32 的设备,并且想模拟它以进行测试,即创建一个行为类似它的假货。根据 MSDN,这是Win32 device namespace。如果可能的话,我怎样才能在那里创建一个类似管道的对象?是否需要编写驱动程序,或者是否有用户空间API?
(当然,我可以更改消费代码以使用我的管道,或者通过其他十几种方式解决它。但我真的对这个 Win32 设备命名空间很好奇。)
【问题讨论】:
-
不是您问题的答案,但您可能对 Sysinternal 的 WinObj(可从 Microsoft 网站下载)感兴趣,它允许您查看内核命名空间的内容。
-
我认为解释
\\.foo的方式意味着您可以使用DefineDosDevice在设备命名空间中创建从xillybus_read_32到命名管道的符号链接.但我不确定细节。
标签: winapi windows-kernel