我已经在互联网上进行了广泛搜索,但没有找到很好的解释。
我的问题很简单。
我有一个 DLL,它有一个名为 Initialize 的函数,其中一个参数是一个指针,它将接收一个用于后续调用的句柄。另一个参数是一个字符串,为了完整起见,我将列出它。我使用的签名是(以简单的形式):
[DllImport(MyDll)]
static extern bool Initialize([In] string name, out IntPtr handle);
DLL 本身的签名写成:Initialize(LPTSTR name, HANDLE handle)
带有注释“HANDLE:指向将接收句柄的位置的指针”。
随后的调用形式为
[DllImport(MyDll)]
static extern bool DoSomething(IntPtr handle, uint randomParameter);
我一直在阅读SafeHandle
,我想知道是否可以用它来代替我的 IntPtr 句柄。如果可以,我该怎么做?扩展抽象的 SafeHandle 类不是问题,但我可以直接用我的 IntPtr 替换 SafeHandle(并使用默认编组)还是需要做一些额外的事情?