在 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 所经过的逻辑。或者,只是尝试打开它。