IDebugAdvanced2::FindSourceFileAndToken 메서드(dbgeng.h)

FindSourceFileAndToken 메서드는 원본 경로에 있는 원본 파일의 파일 이름을 반환하거나 파일 토큰과 연결된 변수의 값을 반환합니다.

구문

HRESULT FindSourceFileAndToken(
  [in]            ULONG   StartElement,
  [in]            ULONG64 ModAddr,
  [in]            PCSTR   File,
  [in]            ULONG   Flags,
  [in, optional]  PVOID   FileToken,
  [in]            ULONG   FileTokenSize,
  [out, optional] PULONG  FoundElement,
  [out, optional] PSTR    Buffer,
  [in]            ULONG   BufferSize,
  [out, optional] PULONG  FoundSize
);

매개 변수

[in] StartElement

검색을 시작할 원본 경로 내의 요소 인덱스를 지정합니다. StartElement 이전의 원본 경로에 있는 모든 요소는 검색에서 제외됩니다. 첫 번째 요소의 인덱스는 0입니다. StartElement가 원본 경로의 요소 수보다 크거나 같으면 제출 시스템이 직접 검사됩니다.

이 매개 변수는 FoundElement와 함께 사용하여 원본 경로의 여러 일치 항목에 대해 검사 수 있습니다.

플래그 DEBUG_FIND_SOURCE_TOKEN_LOOKUP 플래그에 설정된 경우 StartElement는 무시됩니다.

[in] ModAddr

원본 파일이 관련된 대상에서 모듈의 메모리 할당 내 위치를 지정합니다. ModAddr 는 검색 결과를 캐싱하고 파일에 대한 원본 서버를 쿼리할 때 사용됩니다. ModAddr는NULL일 수 있습니다.

플래그 DEBUG_FIND_SOURCE_TOKEN_LOOKUP 플래그에 설정된 경우 ModAddr은 무시됩니다. 또한 FileTokenNULL이 아닌 경우 원본 서버를 쿼리하는 데 사용되지 않습니다.

[in] File

검색할 파일의 경로와 파일 이름을 지정합니다.

플래그 DEBUG_FIND_SOURCE_TOKEN_LOOKUP 설정된 경우 FileToken의 토큰으로 파일이 이미 지정됩니다. 이 경우 파일은 파일 과 관련된 원본 서버의 변수 이름을 지정합니다. 변수는 %SRCSRVCMD%와 같은 백분율 기호( % )로 시작하고 끝나야 합니다. 이 변수의 값이 반환됩니다.

[in] Flags

이 메서드의 동작을 제어하는 플래그를 지정합니다. 이러한 플래그에 대한 설명은 비고를 참조하세요.

[in, optional] FileToken

원본 서버의 파일을 나타내는 파일 토큰을 지정합니다. GetSourceFileInformation 메서드에서 DEBUG_SRCFILE_SYMBOL_TOKEN 설정하여 파일 토큰을 가져올 수 있습니다.

플래그 DEBUG_FIND_SOURCE_TOKEN_LOOKUP 설정된 경우 FileTokenNULL이 아니어야 합니다.

[in] FileTokenSize

FileToken 토큰의 크기(바이트)를 지정합니다. FileTokenNULL이면 이 매개 변수는 무시됩니다.

[out, optional] FoundElement

파일이 포함된 원본 경로 내에서 요소의 인덱스를 받습니다. 파일이 원본 경로를 사용하지 않고 제출 시스템에서 직접 발견되면 -1이 FoundElement로 반환됩니다. FoundElementNULL이거나 Flags에 DEBUG_SRCFILE_SYMBOL_TOKEN 포함된 경우 이 정보가 반환되지 않습니다.

[out, optional] Buffer

찾은 파일의 이름을 받습니다. 파일이 원본 서버에 없는 경우 로컬 원본 캐시에 있는 파일의 이름입니다. 플래그 DEBUG_FIND_SOURCE_FULL_PATH 설정된 경우 파일의 전체 정식 경로 이름입니다. 그렇지 않으면 파일을 찾는 데 사용된 파일 의 꼬리와 원본 경로의 디렉터리를 연결합니다.

플래그 DEBUG_SRCFILE_SYMBOL_TOKEN 플래그가 Flags에 설정된 경우 버퍼는 파일 토큰 FileToken과 연결된 File이라는 변수의 값을 받습니다.

BufferNULL이면 이 정보가 반환되지 않습니다.

[in] BufferSize

버퍼 버퍼의 문자 크기를 지정합니다. 이 크기에는 '\0' 종료 문자의 공간이 포함됩니다. BufferNULL이면 이 매개 변수는 무시됩니다.

[out, optional] FoundSize

파일 이름의 문자 크기를 지정합니다. 이 크기에는 '\0' 종료 문자의 공간이 포함됩니다. foundSizeNULL이면 이 정보가 반환되지 않습니다.

반환 값

이 메서드는 오류 값을 반환할 수도 있습니다. 자세한 내용은 반환 값을 참조하세요 .

반환 코드 Description
S_OK
메서드를 성공적으로 수행했습니다.
S_FALSE
메서드를 성공적으로 수행했습니다. 그러나 버퍼 버퍼가 너무 작아서 파일 이름 또는 변수 값을 보유할 수 없으므로 버퍼에 맞게 문자열이 잘렸습니다.

설명

플래그 DEBUG_SRCFILE_SYMBOL_TOKEN 플래그에 설정된 경우 이 메서드는 원본 경로에서 파일을 검색하지 않습니다. 대신 FileToken에 제공된 파일 토큰과 연결된 변수를 찾습니다. 이러한 변수는 언어 사양 1 항목에 설명되어 있습니다. 예를 들어 SRCSRVCMD 변수의 값을 검색하려면 소스 제어( GetSourceFileInformation의 DEBUG_SRCFILE_SYMBOL_TOKEN_SOURCE_COMMAND_WIDE 함수에서도 반환됨)에서 소스 파일을 추출하는 명령으로 파일을%SRCSRVCMD%로 설정합니다.

엔진은 다음 단계(순서대로)를 사용하여 파일을 검색합니다.

  1. 원본 경로에 원본 서버가 포함되어 있고 플래그 DEBUG_FIND_SOURCE_NO_SRCSRV 설정되지 않은 경우 원본 경로의 원본 서버가 먼저 검색됩니다.

    찾은 첫 번째 일치 항목이 반환됩니다.

  2. 원본 경로의 각 디렉터리에 대해 디렉터리 경로의 끝과 파일 경로의 시작 사이에 겹치는 부분을 찾으려고 시도합니다. 예를 들어 원본 경로에 C:\a\b\c\d 디렉터리가 있고 File 이 c\d\e\foo.c이면 C:\a\b\c\d\e\foo.c 파일이 일치합니다.

    플래그 DEBUG_FIND_SOURCE_BEST_MATCH 설정된 경우 가장 긴 겹침이 있는 일치 항목이 반환됩니다. 그렇지 않으면 첫 번째 일치 항목이 반환됩니다.

  3. 원본 경로의 각 디렉터리에 대해 파일이 디렉터리에 추가됩니다. 일치하는 항목이 없으면 이 프로세스가 반복되고 파일 경로의 시작 부분에서 첫 번째 디렉터리가 제거될 때마다 반복됩니다. 예를 들어 원본 경로에 C:\a\b 디렉터리가 있고 File 이 c\d\e\foo.c이면 C:\a\b\e\foo.c 파일이 일치합니다.

    찾은 첫 번째 일치 항목이 반환됩니다.

  4. 파일 파일 은 파일 시스템에서 직접 조회됩니다.
원본 파일에 대한 자세한 내용은 원본 파일 사용을 참조하세요. 원본 경로 및 해당 구문에 대한 개요는 원본 경로를 참조하세요.

DEBUG_FIND_SOURCE_XXX 비트 플래그는 원본 파일을 검색할 때 FindSourceFile 및 FindSourceFileAndToken 메서드 의 동작을 제어하는 데 사용됩니다.

플래그는 다음 표의 값 조합일 수 있습니다.

상수 Description
DEBUG_FIND_SOURCE_FULL_PATH 항상 찾은 파일의 전체 정식 경로 이름을 반환합니다.

설정하지 않고 원본 경로에 상대 디렉터리를 포함하는 경우 상대 경로 이름을 반환할 수 있습니다.

DEBUG_FIND_SOURCE_BEST_MATCH 더 나은 일치 항목을 찾기 위해 일치 항목이 발견된 후에도 계속 검색합니다.
DEBUG_FIND_SOURCE_NO_SRCSRV 검색에 원본 서버를 포함하지 마세요.
DEBUG_FIND_SOURCE_TOKEN_LOOKUP 파일 토큰과 연결된 변수를 반환합니다.

이 플래그가 설정되면 다른 플래그는 무시됩니다. FindSourceFile 메서드에서는 이 플래그를 사용할 수 없습니다.

 

DEBUG_FIND_SOURCE_DEFULT 값은 기본 플래그 집합을 정의합니다. 즉, 이전 테이블의 모든 플래그가 꺼져 있습니다.

요구 사항

요구 사항
대상 플랫폼 데스크톱
머리글 dbgeng.h(Dbgeng.h 포함)

추가 정보

DEBUG_FIND_SOURCE_XXX

FindSourceFile

GetSourceFileInformation

GetSourcePathElement

IDebugAdvanced2

IDebugAdvanced3