Freigeben über


Module

Ein Image ist eine ausführbare Datei, DLL oder ein Treiber, den Windows als Teil eines Benutzermodusprozesses oder des Kernels geladen hat. Die Datei, aus der das Bild geladen wurde, wird als Bilddatei bezeichnet.

Das Debuggermodul speichert eine Liste von Modulen für jeden Prozess (oder im Kernelmodus, den virtuellen Prozess). In der Regel stellt jedes Modul in dieser Liste ein Bild im Prozess dar. Die Modulliste des Motors kann mithilfe von Reload mit dem Zielsystem synchronisiert werden.

Anmerkung Im Kernelmodusdebugging enthält die Modulliste des Moduls für den virtuellen Prozess sowohl die systemweiten Kernelmodusmodule als auch die Benutzermodusmodule des aktuellen Prozesses.

Ein Modul kann durch seine Basisadresse im virtuellen Adressraum des Ziels oder durch seinen Index in der Liste der Module angegeben werden, die die Engine für das Ziel verwaltet. Der Index des Moduls entspricht seiner Position in der Liste der Module, und daher ändert sich dieser Index, wenn ein Modul mit einem niedrigeren Index entladen wird. Alle entladenen Module weisen Indizes auf; diese sind immer höher als die Indizes geladener Module. Die Basisadresse eines Moduls ändert sich nicht, solange es geladen bleibt; in einigen Fällen kann es sich ändern, wenn das Modul entladen und dann neu geladen wird.

Der Index ist eine Zahl zwischen Null und der Anzahl der Module im Ziel minus 1. Die Anzahl der Module im aktuellen Prozess kann durch Aufrufen von GetNumberModules gefunden werden.

Der Index kann verwendet werden, um die Basisadresse durch Aufrufen von GetModuleByIndex zu finden. Die Basisadresse eines Moduls, das ein Symbol mit einem bestimmten Namen besitzt, finden Sie mithilfe von GetSymbolModule.

Die folgenden Methoden geben sowohl den Index als auch die Basisadresse des angegebenen Moduls zurück:

  • Verwenden Sie GetModuleByModuleName, um ein Modul mit einem bestimmten Modulnamen zu suchen.

  • Das Modul, dessen virtueller Adressbereich eine bestimmte Adresse enthält, wird von GetModuleByOffset zurückgegeben. Diese Methode kann verwendet werden, um den Modulindex anhand der Basisadresse des Moduls zu finden.

Die folgenden Methoden geben Informationen zu Modulen zurück, die entweder anhand der Basisadresse oder des Indexes angegeben werden:

Entladene Module

Beim Debuggen im Benutzermodus werden entladene Module nur in Windows Server 2003 und höheren Versionen von Windows nachverfolgt. Frühere Versionen von Windows haben nur ungeladene Module im Kernelmodus nachverfolgt. Wenn sie nachverfolgt werden, werden sie nach den geladenen Modulen indiziert. Daher durchsucht jede Methode, die die Module des Ziels durchsucht, alle geladenen Module und dann die entladenen Module. Ungeladene Module können verwendet werden, um Fehler zu analysieren, die durch einen Versuch verursacht werden, entladenen Code aufzurufen.

Synthetische Module

Synthetische Module können als Möglichkeit zum Bezeichnen eines Speicherbereichs erstellt werden. Diese Module können keine echten Symbole enthalten, aber sie können synthetische Symbole enthalten. Die Methode AddSyntheticModule erstellt ein neues synthetisches Modul. Synthetische Module können mithilfe von RemoveSyntheticModule entfernt werden. Durch erneutes Laden aller Module im Ziel werden alle synthetischen Module gelöscht.

Bildpfad

Der Pfad des ausführbaren Bilds wird vom Modul beim Suchen nach ausführbaren Bildern verwendet.

Der Pfad des ausführbaren Bilds kann aus mehreren Verzeichnissen bestehen, die durch Semikolons (;) getrennt sind. Diese Verzeichnisse werden in der Reihenfolge durchsucht.

Eine Übersicht über den Pfad des ausführbaren Bilds finden Sie unter "Ausführbarer Bildpfad".

Verwenden Sie die AppendImagePath-Methode, um dem Pfad des ausführbaren Bilds ein Verzeichnis hinzuzufügen. Der gesamte ausführbare Bildpfad wird von GetImagePath zurückgegeben und kann mithilfe von SetImagePath geändert werden.

Zusätzliche Informationen

Weitere Informationen zu Prozessen und virtuellen Prozessen finden Sie unter Threads und Prozesse.