题
在 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 所经历的逻辑。或者,尝试打开它。
不隶属于 StackOverflow