Módulos

Una imagen es un archivo ejecutable, dll o controlador que Windows carga como parte de un proceso en modo de usuario o del kernel. El archivo desde el que se cargó la imagen se conoce como su archivo de imagen.

El motor del depurador almacena en caché una lista de módulos para cada proceso (o, en modo kernel, el proceso virtual). Normalmente, cada módulo de esta lista representa una imagen en el proceso. La lista de módulos del motor se puede sincronizar con el destino mediante Recargar.

Nota En la depuración en modo kernel, la lista de módulos del motor para el proceso virtual contiene los módulos en modo kernel de todo el sistema y los módulos de modo de usuario del proceso actual.

Un módulo se puede especificar por su dirección base en el espacio de direcciones virtuales del destino o por su índice en la lista de módulos que el motor mantiene para el destino. El índice del módulo es igual a su posición en la lista de módulos y, por tanto, este índice cambiará si se descarga un módulo con un índice inferior. Todos los módulos descargados tienen índices; siempre son superiores a los índices de los módulos cargados. La dirección base de un módulo no cambiará mientras permanezca cargado; En algunos casos, puede cambiar si el módulo se descarga y, a continuación, se vuelve a cargar.

El índice es un número entre cero y el número de módulos del destino menos uno. Para encontrar el número de módulos del proceso actual, llame a GetNumberModules.

El índice se puede usar para buscar la dirección base llamando a GetModuleByIndex. La dirección base de un módulo que posee un símbolo con un nombre determinado se puede encontrar mediante GetSymbolModule.

Los métodos siguientes devuelven el índice y la dirección base del módulo especificado:

  • Para buscar un módulo con un nombre de módulo determinado, use GetModuleByModuleName.

  • GetModuleByOffset devuelve el módulo cuyo intervalo de direcciones virtuales contiene una dirección determinada. Este método se puede usar para buscar el índice del módulo dada la dirección base del módulo.

Los métodos siguientes devuelven información sobre los módulos especificados por dirección base o índice:

Módulos descargados

Durante la depuración en modo de usuario, solo se realiza un seguimiento de los módulos descargados en Windows Server 2003 y versiones posteriores de Windows. Las versiones anteriores de Windows solo se realizaba un seguimiento de los módulos descargados en modo kernel. Cuando se realiza un seguimiento de ellos, se indexa después de los módulos cargados. Por lo tanto, cualquier método que busque los módulos del destino buscará todos los módulos cargados y, a continuación, los módulos descargados. Los módulos descargados se pueden usar para analizar los errores causados por un intento de llamar al código descargado.

Módulos sintéticos

Los módulos sintéticos se pueden crear como una manera de etiquetar una región de memoria. Estos módulos no pueden contener símbolos reales, pero pueden contener símbolos sintéticos. El método AddSyntheticModule crea un nuevo módulo sintético. Los módulos sintéticos se pueden quitar mediante RemoveSyntheticModule. Al volver a cargar todos los módulos del destino, se eliminan todos los módulos sintéticos.

Ruta de acceso de la imagen

El motor usa la ruta de acceso de la imagen ejecutable al buscar imágenes ejecutables.

La ruta de acceso de la imagen ejecutable puede constar de varios directorios separados por punto y coma (;). Estos directorios se buscan en orden.

Para obtener información general sobre la ruta de acceso de la imagen ejecutable, consulte Ruta de acceso de la imagen ejecutable.

Para agregar un directorio a la ruta de acceso de la imagen ejecutable, use el método AppendImagePath. GetImagePath devuelve toda la ruta de acceso de la imagen ejecutable y se puede cambiar mediante SetImagePath.

Información adicional

Para obtener más información sobre procesos y procesos virtuales, vea Subprocesos y procesos.