在 Unix 上,一切都是文件,因此您可以将文件 I/O 函数与管道、文件、套接字等一起使用。但在 Windows 上,您使用的 api 取决于您拥有的 i/o HANDLE 的类型。

我的问题是:给定一个 HANDLE,你如何确定底层类型是什么?例如,我有一个 HANDLE,它要么是真实文件,要么是命名/匿名管道。我想知道是否可以在此 HANDLE 上调用 PeekNamedPipe。

有帮助吗?

解决方案

使用 GetFileType. 。检查返回值是否为 FILE_TYPE_PIPE.

http://msdn.microsoft.com/en-us/library/aa364960(VS.85).aspx

其他提示

没有试图变得愚蠢。叫它。如果您收到错误代码,说明其类型错误......那你就知道了。

当尝试查看用户是否有权打开文件时,类似的原理是相关的。可以尝试完全逆向工程并重新实现文件系统测试 ACL 所经历的逻辑。或者,尝试打开它。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top