c# - API 调用的 SafeProcessHandle 和 IntPtr 之间的区别

标签 c# .net winapi handle intptr

在使用 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);

另一个可能的版本( on P/Invoke )使用 IntPtr:

[DllImport("kernel32.dll",SetLastError = true)]
static extern bool GetProcessAffinityMask(IntPtr hProcess,
   out UIntPtr lpProcessAffinityMask, out UIntPtr lpSystemAffinityMask);

鉴于两个函数返回相同的值,传递 SafeProcessHandle 实例或 IntPtr 之间有什么区别?

最佳答案

关于c# - API 调用的 SafeProcessHandle 和 IntPtr 之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3357413/

相关文章:

c# - 内存中的 System.Drawing.Image 需要 MD5 哈希

c# - 如何在 MonoDroid 的代码隐藏中设置边距?

c# - IQuery NHibernate - 它必须是一个列表吗?

c# - 方法 'ExecuteAsync' 没有实现。带有 .NET 4.6.1 的 EF6

c++ - 嵌套对话过程

C++/Win32 : How to wait for a pending delete to complete

c# - 获取在线文件 [http] 大小的最快方法是什么

c# - 通过在主 GUI 之后创建隐藏的 GUI 元素来更快地启动 Winforms,而不牺牲 GUI 设计器

c++ - 如何在 x86(Pentium 及更高版本)上执行原子 64b 读取?

c# - 被遗弃的 MutexException : The wait completed due to an abandoned mutex