在使用 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);
另一个可能的版本(在 P/Invoke 上)使用IntPtr
:
[DllImport("kernel32.dll",SetLastError = true)]
static extern bool GetProcessAffinityMask(IntPtr hProcess,
out UIntPtr lpProcessAffinityMask, out UIntPtr lpSystemAffinityMask);
SafeProcessHandle
鉴于这两个函数返回相同的值,传递一个实例或传递一个有什么区别IntPtr
?