Compartir a través de


Método IDebugAdvanced2::FindSourceFileAndToken (dbgeng.h)

El método FindSourceFileAndToken devuelve el nombre de archivo de un archivo de origen en la ruta de acceso de origen o devuelve el valor de una variable asociada a un token de archivo.

Sintaxis

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

Parámetros

[in] StartElement

Especifica el índice de un elemento dentro de la ruta de acceso de origen desde la que empezar a buscar. Todos los elementos de la ruta de acceso de origen antes de StartElement se excluyen de la búsqueda. El índice del primer elemento es cero. Si startElement es mayor o igual que el número de elementos de la ruta de acceso de origen, el sistema de presentación se comprueba directamente.

Este parámetro se puede usar con foundElement para comprobar si hay varias coincidencias en la ruta de acceso de origen.

StartElement se omite si la marca DEBUG_FIND_SOURCE_TOKEN_LOOKUP está establecida en Marcas.

[in] ModAddr

Especifica una ubicación dentro de la asignación de memoria del módulo en el destino al que está relacionado el archivo de origen. modAddr se usa para almacenar en caché los resultados de búsqueda y al consultar los servidores de origen del archivo. ModAddr puede ser NULL.

ModAddr se omite si la marca DEBUG_FIND_SOURCE_TOKEN_LOOKUP está establecida en Marcas. Y no se usa para consultar servidores de origen si FileToken no es NULL.

[in] File

Especifica la ruta de acceso y el nombre de archivo que se va a buscar.

Si se establece la marca DEBUG_FIND_SOURCE_TOKEN_LOOKUP, el token ya especifica el archivo en FileToken. En este caso, Archivo especifica el nombre de una variable en el servidor de origen relacionado con el archivo. La variable debe comenzar y terminar con el signo de porcentaje ( % ), por ejemplo, %SRCSRVCMD%. Se devuelve el valor de esta variable.

[in] Flags

Especifica las marcas que controlan el comportamiento de este método. Para obtener una descripción de estas marcas, vea Comentarios.

[in, optional] FileToken

Especifica un token de archivo que representa un archivo en un servidor de origen. Se puede obtener un token de archivo estableciendo Que en DEBUG_SRCFILE_SYMBOL_TOKEN en el método GetSourceFileInformation.

Si se establece el DEBUG_FIND_SOURCE_TOKEN_LOOKUP de marca, FileToken no debe ser NULL.

[in] FileTokenSize

Especifica el tamaño en bytes del token de FileToken. Si FileToken es null, este parámetro se omite.

[out, optional] FoundElement

Recibe el índice del elemento dentro de la ruta de acceso de origen que contenía el archivo. Si el archivo se encontró directamente en el sistema de archivos (no mediante la ruta de acceso de origen), -1 se devuelve a FoundElement. Si FoundElement es NULL o Flags contienen DEBUG_SRCFILE_SYMBOL_TOKEN, no se devuelve esta información.

[out, optional] Buffer

Recibe el nombre del archivo que se encontró. Si el archivo no está en un servidor de origen, este es el nombre del archivo en la caché de origen local. Si se establece la marca DEBUG_FIND_SOURCE_FULL_PATH, este es el nombre completo de la ruta de acceso canónica del archivo. De lo contrario, es la concatenación del directorio en la ruta de acceso de origen con la cola de Archivo que se usó para buscar el archivo.

Si el DEBUG_SRCFILE_SYMBOL_TOKEN de marca se establece en Flags, Buffer recibe el valor de la variable denominada File asociada al token de archivo FileToken.

Si de búfer es NULL, no se devuelve esta información.

[in] BufferSize

Especifica el tamaño en caracteres del búfer de búfer. Este tamaño incluye el espacio para el carácter de terminación '\0'. Si de búfer de es NULL, este parámetro se omite.

[out, optional] FoundSize

Especifica el tamaño en caracteres del nombre del archivo. Este tamaño incluye el espacio para el carácter de terminación '\0'. Si foundSize es NULL, no se devuelve esta información.

Valor devuelto

Este método también puede devolver valores de error. Consulte valores devueltos para obtener más información.

Código devuelto Descripción
S_OK
El método se realizó correctamente.
S_FALSE
El método se realizó correctamente. Sin embargo, el búfer de búfer era demasiado pequeño para contener el nombre de archivo o el valor de variable, por lo que la cadena se truncaba para caber en el búfer.

Observaciones

Cuando la marca DEBUG_SRCFILE_SYMBOL_TOKEN se establece en Marcas, este método no busca un archivo en la ruta de acceso de origen. En su lugar, busca una variable asociada al token de archivo proporcionado en FileToken. Estas variables se documentan en el tema Language Specification 1. Por ejemplo, para recuperar el valor de la variable SRCSRVCMD: el comando para extraer el archivo de código fuente del control de código fuente (también devuelto por la función DEBUG_SRCFILE_SYMBOL_TOKEN_SOURCE_COMMAND_WIDE de GetSourceFileInformation)-set File en %SRCSRVCMD%.

El motor usa los pasos siguientes: para buscar el archivo:

  1. Si la ruta de acceso de origen contiene servidores de origen y no se establece la marca DEBUG_FIND_SOURCE_NO_SRCSRV, primero se busca en el servidor de origen en la ruta de acceso de origen.

    Se devuelve la primera coincidencia encontrada.

  2. Para cada directorio de la ruta de acceso de origen, se intenta buscar una superposición entre el final de la ruta de acceso del directorio y el principio de la ruta de acceso del archivo. Por ejemplo, si la ruta de acceso de origen contiene un directorio C:\a\b\c\d y File es c\d\e\foo.c, el archivo C:\a\b\c\d\e\foo.c es una coincidencia.

    Si se establece la marca DEBUG_FIND_SOURCE_BEST_MATCH, se devuelve la coincidencia con la superposición más larga; de lo contrario, se devuelve la primera coincidencia.

  3. Para cada directorio de la ruta de acceso de origen, archivo se anexa al directorio. Si no se encuentra ninguna coincidencia, este proceso se repite y cada vez que se quita el primer directorio desde el principio de la ruta de acceso del archivo. Por ejemplo, si la ruta de acceso de origen contiene un directorio C:\a\b y Archivo es c\d\e\foo.c, el archivo C:\a\b\e\foo.c es una coincidencia.

    Se devuelve la primera coincidencia encontrada.

  4. El archivo Archivo se busca directamente en el sistema de archivos.
Para obtener más información sobre los archivos de origen, vea Using Source Files. Para obtener información general sobre la ruta de acceso de origen y su sintaxis, consulte ruta de acceso de origen.

Los DEBUG_FIND_SOURCE_XXX marcas de bits se usan para controlar el comportamiento de los métodos findSourceFile y findSourceFileAndToken al buscar archivos de origen.

Las marcas pueden ser cualquier combinación de valores de la tabla siguiente.

Constante Descripción
DEBUG_FIND_SOURCE_FULL_PATH Devuelve siempre el nombre de la ruta de acceso canónica completa para el archivo encontrado.

Si no se establece y la ruta de acceso de origen contiene directorios relativos, se pueden devolver nombres de ruta de acceso relativos.

DEBUG_FIND_SOURCE_BEST_MATCH Continúe buscando una coincidencia después de que se haya encontrado una coincidencia para buscar una mejor coincidencia.
DEBUG_FIND_SOURCE_NO_SRCSRV No incluya servidores de origen en la búsqueda.
DEBUG_FIND_SOURCE_TOKEN_LOOKUP Devuelve una variable asociada a un token de archivo.

Si se establece esta marca, se omiten las demás marcas. Esta marca no se puede usar en el método FindSourceFile.

 

El valor DEBUG_FIND_SOURCE_DEFULT define el conjunto predeterminado de marcas, lo que significa que todas las marcas de la tabla anterior están desactivadas.

Requisitos

Requisito Valor
de la plataforma de destino de Escritorio
encabezado de dbgeng.h (include Dbgeng.h)

Consulte también

DEBUG_FIND_SOURCE_XXX

FindSourceFile

GetSourceFileInformation

GetSourcePathElement

IDebugAdvanced2

IDebugAdvanced3