IVsCoTaskMemFreeMyStrings Интерфейс

Определение

Используется совместно с некоторыми другими интерфейсами, чтобы указать, что строки, возвращаемые из этих интерфейсов, должны быть освобождены вызывающим объектом.Used in association with certain other interfaces to indicate that strings returned from those interfaces should be freed by the caller.

public interface class IVsCoTaskMemFreeMyStrings
public interface class IVsCoTaskMemFreeMyStrings
__interface IVsCoTaskMemFreeMyStrings
[System.Runtime.InteropServices.Guid("47811DA4-330F-4EB5-9D14-BBC82773DA66")]
[System.Runtime.InteropServices.InterfaceType(1)]
public interface IVsCoTaskMemFreeMyStrings
[<System.Runtime.InteropServices.Guid("47811DA4-330F-4EB5-9D14-BBC82773DA66")>]
[<System.Runtime.InteropServices.InterfaceType(1)>]
type IVsCoTaskMemFreeMyStrings = interface
Public Interface IVsCoTaskMemFreeMyStrings
Атрибуты

Комментарии

Обычные правила COM требует, чтобы любая строка, передаваемая вызывающему объекту, была копией строки, которую вызывающий объект в конечном итоге уничтожает.Normal COM rules require that any string passed back to a caller should be a copy of the string that the caller eventually disposes of. Иными словами, вызывающий объект получает владение строкой и может удалить строку при постановке вызывающего объекта.In other words, the caller is given ownership of the string and can dispose of the string when the caller sees fit.

Некоторые интерфейсы в Visual StudioVisual Studio пространстве расширяемости не соответствуют этому правилу передачи владения вызывающему объекту для повышения производительности.Some interfaces in the Visual StudioVisual Studio extensibility space do not adhere to this rule of passing ownership to the caller for performance reasons. Вызывающие объекты этих специальных интерфейсов понимают это изменение в правиле и не пытаются удалить строку.The callers of those special interfaces understand this change in the rule and do not attempt to dispose of the string. Однако в управляемом коде объявления параметров для возвращаемых строк в этих специальных интерфейсах подразумевают, что всегда передает владение строки вызывающему объекту.However in managed code, the parameter declarations for returned strings in those special interfaces imply always passing ownership of the string to the caller.

Управляемый код должен реализовать IVsCoTaskMemFreeMyStrings интерфейс для этих интерфейсов, чтобы указать, что строка действительно должна быть высвобождена вызывающим объектом; в противном случае вызывающий объект не освобождает строку.Managed code should implement the IVsCoTaskMemFreeMyStrings interface on those specific interfaces to indicate that the string really should be freed by the caller; otherwise, the caller does not free the string.

Примечания для тех, кто реализует этот метод

Реализуйте этот интерфейс в тех же интерфейсах, которые содержат следующие методы.Implement this interface on the same interfaces that contain the following methods. Реализация этого интерфейса означает, что строка, возвращаемая из следующих методов, должна быть удалена вызывающим объектом. в противном случае строка не удаляется.Implementing this interface indicates that the string returned from the following methods is to be disposed of by the caller; otherwise, the string is not disposed of.

  • GetText(UInt32, VSTREETEXTOPTIONS, String) (IVsLiteTreeList interface)
  • GetTipText(UInt32, VSTREETOOLTIPTYPE, String) ( IVsLiteTreeList интерфейс)
  • GetTipText(UInt32, VSTREETOOLTIPTYPE, String) (IVsLiteTreeList interface)
  • GetSourceContext(UInt32, IntPtr, UInt32) ( IVsObjectList интерфейс)
  • GetSourceContext(UInt32, IntPtr, UInt32) (IVsObjectList interface)
  • GetText(UInt32, VSTREETEXTOPTIONS, String) ( IVsObjectList интерфейс)
  • GetText(UInt32, VSTREETEXTOPTIONS, String) (IVsObjectList interface)
  • GetNameAt(UInt32, IntPtr) ( IVsLibraryMgr интерфейс)
  • GetNameAt(UInt32, IntPtr) (IVsLibraryMgr interface)
  • GetSeparatorString(String[]) ( IVsLibrary интерфейс)
  • GetSeparatorString(String[]) (IVsLibrary interface)
  • GetDisplayText(Int32, String, Int32[]) ( IVsCompletionSet интерфейс)
  • GetDisplayText(Int32, String, Int32[]) (IVsCompletionSet interface)
  • FullTextRead(String, Int32) ( IVsFullTextScanner интерфейс)
  • FullTextRead(String, Int32) (IVsFullTextScanner interface)
  • Read(String, Int32) ( IVsTextScanner интерфейс)
  • Read(String, Int32) (IVsTextScanner interface)
  • GetEntryText(Int32, Int32, String) ( IVsDropdownBarClient интерфейс)
  • GetEntryText(Int32, Int32, String) (IVsDropdownBarClient interface)
  • Image_FullTextRead(String, Int32) ( IVsPersistentTextImage интерфейс)
  • Image_FullTextRead(String, Int32) (IVsPersistentTextImage interface)
  • Примечания для тех, кто вызывает этот метод

    При наличии неуправляемого кода, вызывающего управляемый код, в один из методов в списке, показанном в разделе Notes for реализуются, вызовите метод QueryInterface для интерфейса, содержащего метод, чтобы получить IVsCoTaskMemFreeMyStrings интерфейс.If you have unmanaged code calling into managed code to one of the methods in the list shown in the Notes for Implementers section, call the QueryInterface method on the interface that contains the method to obtain the IVsCoTaskMemFreeMyStrings interface. Если IVsCoTaskMemFreeMyStrings интерфейс можно получить, вы несете ответственность за освобождение строки путем вызова функции фрикотаскмем (а не функции сисфристринг ).If the IVsCoTaskMemFreeMyStrings interface can be obtained, you are responsible for freeing the string by calling the FreeCoTaskMem function (not the SysFreeString function). Если не удается получить IVsCoTaskMemFreeMyStrings интерфейс, не пытайтесь освободить возвращаемую строку.If you cannot obtain the IVsCoTaskMemFreeMyStrings interface, do not attempt to free the returned string.

    Применяется к