Разница между SafeProcessHandle и IntPtr для вызова API

Работая с 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?

1 ответ

Решение
Другие вопросы по тегам