Разница между SafeProcessHandle и IntPtr для вызова API - PullRequest
1 голос
/ 29 июля 2010

Работая с 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 Ответ

3 голосов
/ 29 июля 2010
...