在 Windows 中讨论资源时什么是“句柄”?它们是如何工作的?
最佳答案
它是资源的抽象引用值,通常是内存、打开的文件或管道。
正确地,在 Windows 中(通常在计算中)句柄是一种抽象,它对 API 用户隐藏了真实的内存地址,允许系统对程序透明地重组物理内存。将句柄解析为指针会锁定内存,释放句柄会使指针无效。在这种情况下,将其视为指针表中的索引...您将索引用于系统 API 调用,系统可以随意更改表中的指针。
或者,当 API 编写者希望 API 的用户与返回地址的具体内容隔离开来时,可以给出一个真正的指针作为句柄;在这种情况下,必须考虑到句柄指向的内容可能随时发生变化(从 API 版本到版本,甚至从调用返回句柄的 API 的调用) - 因此句柄应该被视为简单的不透明值仅对 API 有意义。
我应该补充一点,在任何现代操作系统中,即使是所谓的“真实指针”仍然是进入进程虚拟内存空间的不透明句柄,这使得 O/S 能够在不使指针无效的情况下管理和重新排列内存过程中。
关于windows - 什么是 Windows 句柄?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/902967/