1
在使用WinAPI時,我決定在我的C#應用程序中實現對GetProcessAfinityMask的調用。不過,我已經看到了這個函數的兩個不同的簽名。API調用的SafeProcessHandle和IntPtr的區別
其中一人使用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
之間?