我正在编写一个 .NET 应用程序,我必须使用 API 调用(真的)。我的应用程序通过调用 Win API 的函数来获取 COM 接口CoCreateInstance()
。
当然,我必须在完成这些接口后释放它们。我认为这样做的适当方法是Marshal.Release()
(至少,我没有想到其他合理的方法)。
现在,我想让每个相应的接口指针成为一个安全句柄。为此,我必须从中派生我自己的安全句柄类,SafeHandle
并且必须在派生类中重写ReleaseHandle()
。相应的文档指出:
[...] 特别是,将 ReliabilityContractAttribute 属性应用于您从 ReleaseHandle 调用的任何方法。在大多数情况下,此代码应为: ReliabilityContract(Consistency.WillNotCorruptState, Cer.Success) [...]
这是我的问题:我不知道Marshal.ReleaseHandle()
默认情况下是否已经有了这个合同,如果没有,我该如何添加它。我想我在这里缺乏一些基础知识。有人可以在那里阐明一下吗?