Работая с WinAPI, я решил реализовать вызов GetProcessAfinityMask в моем приложении на C #.Тем не менее, я видел две разные подписи для этой функции.
Один из них использует 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
?