Метод 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

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

[out, optional] Buffer

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

[in] BufferSize

Указывает размер буфера буфера буфера (в символах).

[out, optional] FoundSize

Указывает размер (в символах) имени файла. Если параметр FoundSize имеет значение NULL, эти сведения не возвращаются.

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

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

Код возврата Описание
S_OK
Метод выполнен успешно.
E_NOINTERFACE
Файл не найден в исходном пути.

Комментарии

Для поиска файла подсистема выполняет следующие действия по порядку:

  1. Для каждого каталога в исходном пути выполняется попытка найти перекрытие между концом пути к каталогу и началом пути к файлу. Например, если исходный путь содержит каталог C:\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 (включая Dbgeng.h)

См. также раздел

DEBUG_FIND_SOURCE_XXX

FindSourceFileAndToken

GetSourceFileLineOffsets

GetSourcePathElement

IDebugSymbols

IDebugSymbols2

IDebugSymbols3