IDiaSession::findLinesByLinenum
Note
This article applies to Visual Studio 2015. If you're looking for the latest Visual Studio documentation, see Visual Studio documentation. We recommend upgrading to the latest version of Visual Studio. Download it here
Determines the line numbers of the compiland that the specified line number in a source file lies within or near.
Syntax
HRESULT findLinesByLinenum (
IDiaSymbol* compiland,
IDiaSourceFile* file,
DWORD linenum,
DWORD column,
IDiaEnumLineNumbers** ppResult
);
Parameters
compiland
[in] An IDiaSymbol object that represents the compiland in which to search for the line numbers. This parameter cannot be NULL
.
file
[in] An IDiaSourceFile object that represents the source file to search in. This parameter cannot be NULL
.
linenum
[in] Specifies a one-based line number.
Note
You cannot use zero to specify all lines (use the IDiaSession::findLines method to find all lines).
column
[in] Specifies the column number. Use zero to specify all columns. A column is a byte offset into a line.
ppResult
[out] Returns an IDiaEnumLineNumbers objta that contains a list of the line numbers retrieved.
Return Value
If successful, returns S_OK
; otherwise, returns an error code.
Example
The following example shows how to open a source file, enumerate the compilands contributed by this file, and locate the line numbers in the source file where each compiland starts.
void ShowLinesInCompilands(IDiaSession *pSession, LPCOLESTR filename)
{
IDiaEnumSourceFiles* pEnum;
IDiaSourceFile* pFile;
DWORD celt;
pSession->findFile ( NULL, filename, nsFNameExt, &pEnum );
while ( pEnum->Next ( 1, &pFile, &celt ) == S_OK ) // for each file
{
IDiaEnumSymbols* pEnumCompilands;
IDiaSymbol* pCompiland;
pFile->get_compilands ( &pEnumCompilands );
// for each compiland
while ( pEnumCompilands->Next ( 1, &pCompiland, &celt ) == S_OK )
{
IDiaEnumLineNumbers* pEnum;
// Find first compiland closest to line 1 of the file.
if (pSession->findLinesByLinenum( pCompiland, pFile, 1, 0, &pEnum ) == S_OK)
{
IDiaLineNumber *pLineNumber;
DWORD lineCount;
while ( pEnum->Next(1,&pLineNumber,&lineCount) == S_OK)
{
DWORD lineNum;
if (pLineNumber->get_line(&lineNum) == S_OK)
{
printf("compiland starts in source at line number = %lu\n",lineNum);
}
}
}
}
}
}
See Also
IDiaEnumLineNumbers
IDiaSession
IDiaSession::findLinesByAddr
IDiaSourceFile
IDiaSymbol