首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >确定文件句柄是否为管道句柄

确定文件句柄是否为管道句柄
EN

Stack Overflow用户
提问于 2017-06-12 06:18:18
回答 1查看 957关注 0票数 0

在特定的函数中,我正在接收一个文件HANDLE,我想检查这个文件句柄是否是真正的磁盘文件句柄,而不是管道句柄。可以保证它不是磁盘文件句柄,也可能是管道句柄,而不是任何其他类型的句柄。

我该怎么做呢?

代码语言:javascript
复制
void ProcessHandle(HANDLE hFile)
{
       // Process only if disk file handle
}

函数GetFileInformationByHandle将检索文件句柄信息,如果句柄是管道句柄,则会失败,如文档所示:

这个手柄不应该是管道手柄。

然而,它需要一个大的结构(BY_HANDLE_FILE_INFORMATION),并将填充信息。我不寻找这个详细的信息,所以使用这个功能是一个性能的打击。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-06-12 06:23:28

这方面最简单的API调用是GetFileType。传递句柄,并将返回值与FILE_TYPE_DISKFILE_TYPE_PIPE进行比较。

然而,我非常怀疑你在问题中提到的备选方案之间是否会有可衡量的绩效差异。不要假设调用GetFileInformationByHandle会慢一些。先检查侧写。

当然,使用GetFileInformationByHandle是推断文件类型的一种有点迂回的方法。有一个很好的理由认为,GetFileType是一个更好的选择,因为它直接获取您需要的信息。实际上,正如在各种注释中所讨论的,GetFileInformationByHandle在功能上似乎不能满足您的需求。所以,使用GetFileType

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44492533

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档