Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Determina i numeri di riga del modulo che il numero di riga specificato in un file di origine si trova in o si avvicinano a.
HRESULT findLinesByLinenum (
IDiaSymbol* compiland,
IDiaSourceFile* file,
DWORD linenum,
DWORD column,
IDiaEnumLineNumbers** ppResult
);
Parametri
compiland
[in] IDiaSymbol oggetto che rappresenta il modulo in cui trovare i numeri di riga.Questo parametro non può essere NULL.file
[in] IDiaSourceFile oggetto che rappresenta il file di origine per eseguire la ricerca.Questo parametro non può essere NULL.linenum
[in] specifica un numero di riga in base uno.[!NOTA]
Non è possibile utilizzare zero per specificare tutte le righe (utilizzare IDiaSession::findLines metodo per trovare tutte le righe).
column
[in] specifica il numero di colonne.Utilizzare zero specificare tutte le colonne.Una colonna è un offset di byte in una riga.ppResult
[out] restituisce IDiaEnumLineNumbers objta contenente un elenco di numeri di riga recuperati.
Valore restituito
Se l'operazione riesce, restituisce S_OK; in caso contrario, restituisce un codice di errore.
Esempio
Nell'esempio seguente viene illustrato come aprire un file di origine, enumerano i moduli contribuiti da questo file e individuano i numeri di riga nel file di origine in cui ciascun modulo viene avviato.
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);
}
}
}
}
}
}