在windows中区分pipe道和文件

在Unix上,一切都是文件,所以你可以使用pipe道,文件,套接字等文件I / Ofunction。但在Windows上,你使用的API取决于你有的I / O HANDLEtypes。

我的问题是:给一个句柄你怎么确定底层types是什么? 例如,我有一个HANDLE,它是真实的文件,或者一个命名/匿名pipe道。 我想知道是否可以在这个句柄上调用PeekNamedPipe。

使用GetFileType 。 检查FILE_TYPE_PIPE的返回值。

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

不要试图变傻。 叫它。 如果你得到一个错误代码,说它错误的类型的东西…那么你知道。

当试图查看用户是否有权打开文件时,类似的委托人是相关的。 它可以尝试和完全反向工程,并重新实现文件系统通过测试ACL的逻辑。 或者,试着打开它。