다음을 통해 공유


IDiaSession::findLinesByLinenum

소스 파일의 지정된 줄 번호가 내부 또는 가까이에 있는 컴파일 대상의 줄 번호를 결정합니다.

구문

HRESULT findLinesByLinenum ( 
    IDiaSymbol*           compiland,
    IDiaSourceFile*       file,
    DWORD                 linenum,
    DWORD                 column,
    IDiaEnumLineNumbers** ppResult
);

매개 변수

compiland

[in] 줄 번호를 검색할 컴파일 대상을 나타내는 IDiaSymbol 개체. 이 매개 변수는 을(를) 사용할 NULL수 없습니다.

file

[in] 검색할 소스 파일을 나타내는 IDiaSourceFile 개체. 이 매개 변수는 을(를) 사용할 NULL수 없습니다.

linenum

[in] 1부터 줄 번호를 지정합니다.

참고 항목

모든 줄을 지정하기 위해 0을 사용할 수는 없습니다. 모든 줄을 찾으려면 IDiaSession::findLines 메서드를 사용합니다.

column

[in] 열 번호를 지정합니다. 모든 열을 지정하려면 0을 사용합니다. 열은 선으로의 바이트 오프셋입니다.

ppResult

[out] 검색된 줄 번호의 목록을 포함하는 IDiaEnumLineNumbers 개체를 반환합니다.

Return Value

성공하면 S_OK를 반환하고, 실패하면 오류 코드를 반환합니다.

예시

다음 예제에서는 소스 파일을 열고, 이 파일에서 제공하는 컴파일 대상을 열거하고, 각 컴파일 대상이 시작되는 소스 파일에서 줄 번호를 찾는 방법을 보여 줍니다.

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);
                    }
                }
            }
        }
    }
}

참고 항목