Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Determina los números de línea del compilado en el cual el número de línea especificado en un archivo de origen se encuentra dentro o cerca.
Sintaxis
HRESULT findLinesByLinenum (
IDiaSymbol* compiland,
IDiaSourceFile* file,
DWORD linenum,
DWORD column,
IDiaEnumLineNumbers** ppResult
);
Parámetros
compiland
[in] Objeto IDiaSymbol que representa el compilando en el que buscar los números de línea. Este parámetro no puede ser NULL.
file
[in] Objeto IDiaSourceFile que representa el archivo de origen en el que se va a buscar. Este parámetro no puede ser NULL.
linenum
[in] Especifica un número de línea basado en uno.
Nota
No puede usar cero para especificar todas las líneas (use el método IDiaSession::findLines para buscar todas las líneas).
column
[in] Especifica el número de columna. Use cero para especificar todas las columnas. Una columna es un desplazamiento de bytes en una línea.
ppResult
[out] Devuelve un objeto IDiaEnumLineNumbers que contiene una lista de los números de línea recuperados.
Valor devuelto
Si la operación se realiza correctamente, devuelve S_OK; de lo contrario, devuelve un código de error.
Ejemplo
En el ejemplo siguiente se muestra cómo abrir un archivo de código fuente, enumerar los compilandos aportados por este archivo y buscar los números de línea en el archivo de origen donde se inicia cada compilando.
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);
}
}
}
}
}
}