windows - 什么是 Windows 句柄?

标签 windows handle

在 Windows 中讨论资源时什么是“句柄”?它们是如何工作的?

最佳答案

它是资源的抽象引用值,通常是内存、打开的文件或管道。

正确地,在 Windows 中(通常在计算中)句柄是一种抽象,它对 API 用户隐藏了真实的内存地址,允许系统对程序透明地重组物理内存。将句柄解析为指针会锁定内存,释放句柄会使指针无效。在这种情况下,将其视为指针表中的索引...您将索引用于系统 API 调用,系统可以随意更改表中的指针。

或者,当 API 编写者希望 API 的用户与返回地址的具体内容隔离开来时,可以给出一个真正的指针作为句柄;在这种情况下,必须考虑到句柄指向的内容可能随时发生变化(从 API 版本到版本,甚至从调用返回句柄的 API 的调用) - 因此句柄应该被视为简单的不透明值对 API 有意义。

我应该补充一点,在任何现代操作系统中,即使是所谓的“真实指针”仍然是进入进程虚拟内存空间的不透明句柄,这使得 O/S 能够在不使指针无效的情况下管理和重新排列内存过程中。

关于windows - 什么是 Windows 句柄?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/902967/

相关文章:

java - 测试 RDBMS 和操作系统

c++ - 替换 sync() 命令

windows - 是否可以将 Windows 设置为在插入符合 HID 标准的 USB 设备时自动启动应用程序?

JQuery - 处理点击

linux - 内部脚本和样式表总是指向索引文件 (Node.JS)

pointers - (Think) Pascal 中指向指针的指针和 NewHandle 函数

java - Windows和Unix上传下载动态转换的高效方式

c - 尝试了解 GCC 和 Windows 的主要功能

c - 当我使用 gcc 时,一个函数可以工作,但是当我使用 Microsoft Visual Studio 的编译器时,它什么都不做

php - 为什么 PHP 在一个文件上混合使用两个 fopen 句柄?