En travaillant avec WinAPI, j'ai décidé d'implémenter un appel à GetProcessAfinityMask dans mon application C#. Cependant, j'ai vu deux signatures différentes pour cette fonction.Différence entre SafeProcessHandle et IntPtr pour un appel d'API
L'un d'eux utilise SafeProcessHandle
pour la poignée:
[DllImport("kernel32.dll", CharSet=CharSet.Auto, SetLastError=true)]
public static extern bool GetProcessAffinityMask(SafeProcessHandle handle, out IntPtr processMask, out IntPtr systemMask);
L'autre version possible (on P/Invoke) utilise IntPtr
:
[DllImport("kernel32.dll",SetLastError = true)]
static extern bool GetProcessAffinityMask(IntPtr hProcess,
out UIntPtr lpProcessAffinityMask, out UIntPtr lpSystemAffinityMask);
Étant donné que les deux fonctions renvoient les mêmes valeurs, quelle est la différence entre passer une instance SafeProcessHandle
ou IntPtr
?