在循环中对物理设备路径调用 CreateFile

发布于 2024-08-11 04:31:08 字数 280 浏览 11 评论 0原文

我有一些 C# 代码,每次通过 pInvoke 循环(即 \.\PhysicalDrive1,然后 \.\PhysicalDrive2,...)在不同的物理设备路径上调用 CreateFile,然后使用返回的句柄执行其他一些低级别操作窗户的东西。在循环结束时,它对句柄调用 CloseHandle。

在调试时,我注意到每次循环时句柄的 int 值都是相同的。我可以看到这要么是预期的(Windows 只是重用句柄),要么是意外的(上次传递句柄没有释放)。

所以我只想验证这是否是预期的(或者至少不是不正确的)行为。

I have some C# code that is calling CreateFile on a different physical device path each time through a loop(ie \.\PhysicalDrive1, then \.\PhysicalDrive2, ...) via pInvoke and then using the returned handle do some other low level windows stuff. At the end of the loop it calls CloseHandle on the handle.

While debugging I noticed that the int value of the handle was the same each pass through the loop. I can see this being either expected (windows is just reusing the handle) or unexpected (the handle wasn't released last pass).

So I just want to verify whether or not this is expected (or at least not incorrect) behaviour.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

国产ˉ祖宗 2024-08-18 04:31:08

句柄只是内核中某个表中某个条目的索引。如果您重复打开和关闭句柄,则它完全有可能获得表中完全相同的条目,从而获得相同的索引。

请注意,这是特定于实现的,并且可能会随着任何新版本、服务包或 QFE 的变化而改变。

A handle is just an index to some entry into some table in the kernel. If you are opening and closing a handle repeatedly, it is entirely possible for it to get the exact same entry in the table and hence the same index.

Be aware that this is implementation specific and can change with any new release, service pack, or QFE.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文