【问题标题】:Distinguishing a pipe from a file in windows在 Windows 中区分管道和文件
【发布时间】:2009-05-18 17:34:33
【问题描述】:

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

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

【问题讨论】:

    标签: windows file pipe handle


    【解决方案1】:

    使用GetFileType。检查返回值FILE_TYPE_PIPE。

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

    【讨论】:

      【解决方案2】:

      不想装傻。 称它为。如果你收到一个错误代码,说它是错误类型的东西......那么你就知道了。

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

      【讨论】:

      • 在某些情况下,这可能会导致挂起或引发 SEH 异常。我会避免在命名管道句柄上调用任何东西,并假设行为会很好。
      猜你喜欢
      • 2010-10-28
      • 1970-01-01
      • 2010-09-16
      • 2016-03-13
      • 2020-05-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-04-04
      相关资源
      最近更新 更多