IDiaSession::findLinesByLinenum
Określa numery linii compiland, że określony numer wiersza w pliku źródłowym leży w obrębie lub w jego pobliżu.
HRESULT findLinesByLinenum (
IDiaSymbol* compiland,
IDiaSourceFile* file,
DWORD linenum,
DWORD column,
IDiaEnumLineNumbers** ppResult
);
Parametry
compiland
[w] IDiaSymbol Obiekt, który reprezentuje compiland, w którym do wyszukiwania numery linii.Ten parametr nie może być NULL.file
[w] IDiaSourceFile Obiekt, który reprezentuje plik źródłowy do wyszukiwania.Ten parametr nie może być NULL.linenum
[w] Określa liczbę linii opartych na jeden.[!UWAGA]
Zero nie można użyć, aby określić wszystkie wiersze (Użyj IDiaSession::findLines metodę, aby znaleźć wszystkie wiersze).
column
[w] Określa numer kolumny.Użyj zero, aby określić wszystkie kolumny.Kolumna jest przesunięcie bajtu do wiersza.ppResult
[out] Zwraca IDiaEnumLineNumbers objta, który zawiera listę numerów wierszy pobierane.
Wartość zwracana
Jeśli się powiedzie, zwraca S_OK; w przeciwnym razie zwraca kod błędu.
Przykład
Poniższy przykład pokazuje, jak otworzyć plik źródłowy, wyliczenia compilands, wniesionych przez ten plik i zlokalizuj numerów wierszy w pliku źródłowym, gdzie rozpoczyna się każdego compiland.
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);
}
}
}
}
}
}