IVsCoTaskMemFreeMyStrings 接口
用于具有某些其他接口具有关系指示应由调用方释放从这些接口返回的字符串。
命名空间: Microsoft.VisualStudio.Shell.Interop
程序集: Microsoft.VisualStudio.Shell.Interop.8.0(在 Microsoft.VisualStudio.Shell.Interop.8.0.dll 中)
语法
声明
<InterfaceTypeAttribute()> _
<GuidAttribute("47811DA4-330F-4EB5-9D14-BBC82773DA66")> _
Public Interface IVsCoTaskMemFreeMyStrings
[InterfaceTypeAttribute()]
[GuidAttribute("47811DA4-330F-4EB5-9D14-BBC82773DA66")]
public interface IVsCoTaskMemFreeMyStrings
备注
常规的 COM 规则要求所有字符串传递回调用方应该是调用方最终处理字符串的副本。 换言之,那么,当调用方根据运行时,使调用方字符串的所有权,并可处理该字符串。
在 Visual Studio 扩展性空间的一些接口不符合出于性能原因通过所有权此规则给调用方。 一些特定接口的调用方了解规则中的此更改,并且不尝试处理该字符串。 但是在托管代码中,返回的字符串的参数声明在一些特定接口提示始终将该字符串的所有权转移给调用方。
托管代码应实现处于一些特定的接口的 IVsCoTaskMemFreeMyStrings 接口指示应由调用方实际释放字符串;否则,调用方不释放字符串。
对实现者的说明
实现在包含下列方法的相同接口的此接口。 实现此接口指示从以下方法返回的字符串将被调用方处理;否则,该字符串未处理。
GetText (IVsLiteTreeList 接口)
GetText (IVsObjectList 接口)
GetNameAt (IVsLibraryMgr 接口)
Read (IVsTextScanner 接口)
对调用者的说明
如果具有非托管代码到托管代码的调用您的某个方法在实现者说明显示的列表部分,则对包含方法获取 IVsCoTaskMemFreeMyStrings 接口的接口的 QueryInterface 方法。 如果 IVsCoTaskMemFreeMyStrings 接口可用,您负责释放字符串通过调用 FreeCoTaskMem 函数 (不是 SysFreeString 函数)。 如果无法获取 IVsCoTaskMemFreeMyStrings 接口,不要尝试释放该返回的字符串。