2010-07-28 55 views
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之間?

回答

相關問題