Поделиться через


Метод IDebugSymbols3::FindSourceFile (dbgeng.h)

Метод FindSourceFile ищет исходный путь для указанного исходного файла.

Синтаксис

HRESULT FindSourceFile(
  [in]            ULONG  StartElement,
  [in]            PCSTR  File,
  [in]            ULONG  Flags,
  [out, optional] PULONG FoundElement,
  [out, optional] PSTR   Buffer,
  [in]            ULONG  BufferSize,
  [out, optional] PULONG FoundSize
);

Параметры

[in] StartElement

Указывает индекс элемента в пути к источнику, с чего начать поиск. Все элементы в пути к источнику до StartElement исключены из поиска. Индекс первого элемента равен нулю. Если StartElement больше или равно количеству элементов в пути к источнику, система подачи проверяется непосредственно.

Этот параметр можно использовать с FoundElement для проверки нескольких совпадений в пути к источнику.

[in] File

Указывает путь и имя файла для поиска.

[in] Flags

Задает флаги поиска. Описание этих флагов см. в DEBUG_FIND_SOURCE_XXX.

Флаг DEBUG_FIND_SOURCE_TOKEN_LOOKUP не должен быть задан. Флаг DEBUG_FIND_SOURCE_NO_SRCSRV игнорируется, так как этот метод не включает исходные серверы в поиск.

[out, optional] FoundElement

Получает индекс элемента в исходном пути, который содержит файл. Если файл был найден непосредственно в системе подачи (не используя путь к источнику), то -1 возвращается в FoundElement. Если FoundElementNULL, эти сведения не возвращаются.

[out, optional] Buffer

Получает путь и имя найденного файла. Если установлен флаг DEBUG_FIND_SOURCE_FULL_PATH, это полное каноническое имя файла. В противном случае это объединение каталога в пути к источнику с хвостом файла, который использовался для поиска файла. Если буферnull, эти сведения не возвращаются.

[in] BufferSize

Задает размер буфера в символах.

[out, optional] FoundSize

Задает размер в символах имени файла. Если FoundSizeNULL, эти сведения не возвращаются.

Возвращаемое значение

Этот метод также может возвращать значения ошибок. Дополнительные сведения см. в возвращаемых значений.

Возвращаемый код Описание
S_OK
Метод был успешным.
E_NOINTERFACE
файл не найден в пути к источнику.

Замечания

Подсистема использует следующие шаги для поиска файла:

  1. Для каждого каталога в исходном пути выполняется попытка найти перекрытие между концом пути к каталогу и началом пути к файлу. Например, если исходный путь содержит каталог C:\a\a\b\c\d и файл является c\d\e\samplefile.c, то файл C:\a\b\c\d\e\samplefile.c является совпадением.

    Если установлен флаг DEBUG_FIND_SOURCE_BEST_MATCH, возвращается совпадение с самым длинным перекрытием; в противном случае возвращается первое совпадение.

  2. Для каждого каталога в пути к источнику файл добавляется в каталог. Если совпадение не найдено, этот процесс повторяется и каждый раз, когда первый каталог удаляется с начала пути к файлу. Например, если исходный путь содержит каталог C:\a\b и файл является c\d\e\samplefile.c, то файл C:\a\b\e\samplefile.c соответствует.

    Возвращается первое совпадение.

  3. файл ищется непосредственно в системе подачи.
примечание Все исходные серверы в пути к источнику игнорируются. Чтобы включить исходные серверы в поиск, используйте FindSourceFileAndToken с адресом модуля, указанным в ModAddr.
 
Дополнительные сведения об использовании пути к источнику см. в разделе Использование исходных файлов. Общие сведения о пути к источнику и его синтаксисе см. в пути к источнику.

Требования

Требование Ценность
целевая платформа Настольный
заголовка dbgeng.h (include Dbgeng.h)

См. также

DEBUG_FIND_SOURCE_XXX

FindSourceFileAndToken

GetSourceFileLineOffsets

GetSourcePathElement

IDebugSymbols

IDebugSymbols2

IDebugSymbols3