IVsTextLines.GetMarkerData(Int32, Int32, MARKERDATA[]) Method
Definition
Important
Some information relates to prerelease product that may be substantially modified before it’s released. Microsoft makes no warranties, express or implied, with respect to the information provided here.
Returns text marker data for the specified line range within the text buffer.
public:
int GetMarkerData(int iTopLine, int iBottomLine, cli::array <Microsoft::VisualStudio::TextManager::Interop::MARKERDATA> ^ pMarkerData);
int GetMarkerData(int iTopLine, int iBottomLine, std::Array <Microsoft::VisualStudio::TextManager::Interop::MARKERDATA> const & pMarkerData);
public int GetMarkerData (int iTopLine, int iBottomLine, Microsoft.VisualStudio.TextManager.Interop.MARKERDATA[] pMarkerData);
abstract member GetMarkerData : int * int * Microsoft.VisualStudio.TextManager.Interop.MARKERDATA[] -> int
Public Function GetMarkerData (iTopLine As Integer, iBottomLine As Integer, pMarkerData As MARKERDATA()) As Integer
Parameters
- iTopLine
- Int32
[in] Top line of the marker data.
- iBottomLine
- Int32
[in] Bottom line of the marker data.
- pMarkerData
- MARKERDATA[]
[out] Pointer to filled MARKERDATA structure for the range indicated.
Returns
If the method succeeds, it returns S_OK. If it fails, it returns an error code.
Remarks
COM Signature
From textmgr.idl:
HRESULT IVsTextLines::GetMarkerData(
[in] long iTopLine,
[in] long iBottomLine,
[out] MARKERDATA *pMarkerData
);
Use this method with GetLineData to determine the marker data for a given range in the text buffer. After you call IVsTextLines.GetMarkerData
, you then need to call ReleaseMarkerData to allow the text buffer to clean up the MARKERDATA structure.
GetMarkerData in Managed Code
GetMarkerData can cause problems in managed code. The GetMarkerData implementation that you do not Release the pLayer member. Thus, it does not perform an AddRef on the interface. There is no problem in native C++ so long as you do not call Release In managed code you cannot control when a Release is done. To be safe, you should do an AddRef on the pLayer member after GetMarkerData fills in the data structure. The simplest way to do this is with GetIUnknownForObject:
[C#]
MARKERDATA[] markerData = new MARKERDATA[1];
markerData[0] = new Microsoft.VisualStudio.TextManager.Interop.MARKERDATA();
buffer.GetMarkerData(line, line, markerData);
IntPtr dummyAddRef = Marshal.GetIUnknownForObject(markerData[0].pLayer);