在使用 PInvoke 时,我注意到我们需要使用 IntPtr
来引用 Windows 句柄。我想知道为什么不直接使用 int
作为句柄?我对句柄的理解是它只是一个整数值。
最佳答案
Windows 句柄被定义为本地机器指针大小的整数。这样一来,如果需要,他们就可以 secret 地成为指导者。 (句柄可能不是指针,但如果操作系统实现者认为有必要,它是允许的。出于安全原因,它们通常不是指针;它如果他们实际上是指针,那么人们很容易滥用该系统。)
C# 中定义为 32 位整数的 int,在 64 位机器上太小了。 IntPtr 被定义为一个整数,可以容纳机器大小的指针。这就是为什么在与句柄进行互操作时总是使用 IntPtr 的原因。
关于c# - 为什么使用 IntPtr 作为句柄?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9169370/