IDebugAdvanced3::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은 무시됩니다. 또한 FileToken이 NULL이 아닌 경우 원본 서버를 쿼리하는 데 사용되지 않습니다.
[in] File
검색할 파일의 경로와 파일 이름을 지정합니다.
플래그 DEBUG_FIND_SOURCE_TOKEN_LOOKUP 설정된 경우 FileToken의 토큰으로 파일이 이미 지정됩니다. 이 경우 파일은 파일 과 관련된 원본 서버의 변수 이름을 지정합니다. 변수는 %SRCSRVCMD%와 같은 백분율 기호( % )로 시작하고 끝나야 합니다. 이 변수의 값이 반환됩니다.
[in] Flags
이 메서드의 동작을 제어하는 플래그를 지정합니다. 이러한 플래그에 대한 설명은 비고를 참조하세요.
[in, optional] FileToken
원본 서버의 파일을 나타내는 파일 토큰을 지정합니다. GetSourceFileInformation 메서드에서 DEBUG_SRCFILE_SYMBOL_TOKEN 설정하여 파일 토큰을 가져올 수 있습니다.
플래그 DEBUG_FIND_SOURCE_TOKEN_LOOKUP 설정된 경우 FileToken 은 NULL이 아니어야 합니다.
[in] FileTokenSize
FileToken 토큰의 크기(바이트)를 지정합니다. FileToken이 NULL이면 이 매개 변수는 무시됩니다.
[out, optional] FoundElement
파일이 포함된 원본 경로 내에서 요소의 인덱스를 받습니다. 파일이 원본 경로를 사용하지 않고 제출 시스템에서 직접 발견되면 -1이 FoundElement로 반환됩니다. FoundElement가 NULL이거나 Flags에 DEBUG_SRCFILE_SYMBOL_TOKEN 포함된 경우 이 정보가 반환되지 않습니다.
[out, optional] Buffer
찾은 파일의 이름을 받습니다. 파일이 원본 서버에 없는 경우 로컬 원본 캐시에 있는 파일의 이름입니다. 플래그 DEBUG_FIND_SOURCE_FULL_PATH 설정된 경우 파일의 전체 정식 경로 이름입니다. 그렇지 않으면 파일을 찾는 데 사용된 파일 의 꼬리와 원본 경로의 디렉터리를 연결합니다.
플래그 DEBUG_SRCFILE_SYMBOL_TOKEN 플래그가 Flags에 설정된 경우 버퍼는 파일 토큰 FileToken과 연결된 File이라는 변수의 값을 받습니다.
Buffer가 NULL이면 이 정보가 반환되지 않습니다.
[in] BufferSize
버퍼 버퍼의 문자 크기를 지정합니다. 이 크기에는 '\0' 종료 문자의 공간이 포함됩니다. Buffer가 NULL이면 이 매개 변수는 무시됩니다.
[out, optional] FoundSize
파일 이름의 문자 크기를 지정합니다. 이 크기에는 '\0' 종료 문자의 공간이 포함됩니다. foundSize가 NULL이면 이 정보가 반환되지 않습니다.
반환 값
이 메서드는 오류 값을 반환할 수도 있습니다. 자세한 내용은 반환 값을 참조하세요 .
반환 코드 | Description |
---|---|
|
메서드를 성공적으로 수행했습니다. |
|
메서드를 성공적으로 수행했습니다. 그러나 버퍼 버퍼가 너무 작아서 파일 이름 또는 변수 값을 보유할 수 없으므로 버퍼에 맞게 문자열이 잘렸습니다. |
설명
플래그 DEBUG_SRCFILE_SYMBOL_TOKEN 플래그에 설정된 경우 이 메서드는 원본 경로에서 파일을 검색하지 않습니다. 대신 FileToken에 제공된 파일 토큰과 연결된 변수를 찾습니다. 이러한 변수는 언어 사양 1 항목에 설명되어 있습니다. 예를 들어 SRCSRVCMD 변수의 값을 검색하려면 소스 제어( GetSourceFileInformation의 DEBUG_SRCFILE_SYMBOL_TOKEN_SOURCE_COMMAND_WIDE 함수에서도 반환됨)에서 소스 파일을 추출하는 명령으로 파일을%SRCSRVCMD%로 설정합니다.
엔진은 다음 단계(순서대로)를 사용하여 파일을 검색합니다.
-
원본 경로에 원본 서버가 포함되어 있고 플래그 DEBUG_FIND_SOURCE_NO_SRCSRV 설정되지 않은 경우 원본 경로의 원본 서버가 먼저 검색됩니다.
찾은 첫 번째 일치 항목이 반환됩니다.
-
원본 경로의 각 디렉터리에 대해 디렉터리 경로의 끝과 파일 경로의 시작 사이에 겹치는 부분을 찾으려고 시도합니다. 예를 들어 원본 경로에 C:\a\b\c\d 디렉터리가 있고 File 이 c\d\e\foo.c이면 C:\a\b\c\d\e\foo.c 파일이 일치합니다.
플래그 DEBUG_FIND_SOURCE_BEST_MATCH 설정된 경우 가장 긴 겹침이 있는 일치 항목이 반환됩니다. 그렇지 않으면 첫 번째 일치 항목이 반환됩니다.
-
원본 경로의 각 디렉터리에 대해 파일이 디렉터리에 추가됩니다. 일치하는 항목이 없으면 이 프로세스가 반복되고 파일 경로의 시작 부분에서 첫 번째 디렉터리가 제거될 때마다 반복됩니다. 예를 들어 원본 경로에 C:\a\b 디렉터리가 있고 File 이 c\d\e\foo.c이면 C:\a\b\e\foo.c 파일이 일치합니다.
찾은 첫 번째 일치 항목이 반환됩니다.
- 파일 파일 은 파일 시스템에서 직접 조회됩니다.
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 포함) |