在使用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
之间有什么区别?