API调用的SafeProcessHandle和IntPtr之间的区别

时间:2010-07-28 20:54:15

标签: c# .net winapi handle intptr

在使用WinAPI时,我决定在我的C#应用​​程序中实现对GetProcessAfinityMask的调用。但是,我已经看到了这个函数的两个不同的签名。

其中一个使用SafeProcessHandle作为句柄:

[DllImport("kernel32.dll", CharSet=CharSet.Auto, SetLastError=true)]
public static extern bool GetProcessAffinityMask(SafeProcessHandle handle, out IntPtr processMask, out IntPtr systemMask);

其他可能的版本(on P/Invoke)使用IntPtr

[DllImport("kernel32.dll",SetLastError = true)]
static extern bool GetProcessAffinityMask(IntPtr hProcess,
   out UIntPtr lpProcessAffinityMask, out UIntPtr lpSystemAffinityMask);

鉴于两个函数都返回相同的值,传递SafeProcessHandle实例或IntPtr之间有什么区别?

1 个答案:

答案 0 :(得分:3)