use*_*414 10 .net c# winapi c++-cli window-handles
使用PInvoke时,我注意到我们需要使用它IntPtr来引用Windows句柄.我想知道为什么不只是int用于手柄?我对句柄的理解是它只是一个整数值.
Eri*_*ert 18
Windows句柄定义为本机计算机指针大小的整数.这样他们就可以秘密地成为指针,如果他们需要的话.(句柄可能不是指针,但如果操作系统实现者认为有必要,它可以是一个.由于安全原因,它们通常不是指针;如果实际上它们太容易滥用系统指针.)
C#中的int定义为32位整数,在64位机器上太小.IntPtr定义为可以保存机器大小指针的整数.这就是为什么在与句柄互操作时总是使用IntPtr的原因.