如何区分winapi中的卷和文件句柄?

时间:2013-11-29 09:37:32

标签: c windows file winapi volume

在确保我打开了一个卷句柄之后,我正在迭代我的进程打开的所有句柄。在迭代期间,我使用GetFinalPathNameByHandle()来接收有关与特定句柄相关联的对象的信息,但正如我所看到的,此函数仅适用于文件,并且在文件以外的句柄的情况下返回ERROR_INVALID_HANDLE(0x06)错误。我对吗?如果是,那么我如何检查有问题的句柄是否与音量相关联,以便我可以关闭它?

任何帮助都应该受到赞赏。

1 个答案:

答案 0 :(得分:1)

你这样做是错的。创建句柄时,请记住它。完成后,关闭它。

您无法希望能够枚举流程中的所有打开句柄并关闭一堆符合某些条件的句柄。您无法知道手柄是否正在使用中。您的流程中将会打开未被您的代码打开的句柄。关闭这样的手柄会导致各种各样的痛苦。