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 |
---|---|
|
El método se realizó correctamente. |
|
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:
-
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.
-
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.
-
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.
- El archivo Archivo se busca directamente en el sistema de archivos.
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.
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) |