2

在使用 WinAPI 时,我决定在我的 C# 应用程序中实现对GetProcessAfinityMask的调用。但是,我已经看到了这个函数的两个不同的签名。

其中一种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

4

1 回答 1

3

Safe Handles and Critical Finalization MSDN 文章描述了这种差异。

于 2010-07-28T21:02:47.103 回答