Module
Ein Image ist eine ausführbare Datei, eine DLL oder ein Treiber, die Windows als Teil eines Benutzermodusprozesses oder des Kernels geladen hat. Die Datei, aus der das Image geladen wurde, wird als Imagedatei bezeichnet.
Die Debugger-Engine speichert eine Liste von Modulen für jeden Prozess (oder im Kernelmodus den virtuellen Prozess) zwischen. In der Regel stellt jedes Modul in dieser Liste ein Image im Prozess dar. Die Modulliste des Moduls kann mithilfe von Reload mit dem Ziel synchronisiert werden.
Hinweis Beim Debuggen im Kernelmodus 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 das Modul 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 verfügen über Indizes. diese sind immer höher als die Indizes der geladenen 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 0 und der Anzahl der Module im Ziel minus 1. Die Anzahl der Module im aktuellen Prozess kann durch Aufrufen von GetNumberModules ermittelt werden.
Der Index kann verwendet werden, um die Basisadresse zu finden, indem GetModuleByIndex aufgerufen wird. Die Basisadresse eines Moduls, das ein Symbol mit einem angegebenen Namen besitzt, kann mithilfe von GetSymbolModule gefunden werden.
Die folgenden Methoden geben sowohl den Index als auch die Basisadresse des angegebenen Moduls zurück:
Um ein Modul mit einem angegebenen Modulnamen zu finden, verwenden Sie GetModuleByModuleName.
Das Modul, dessen virtueller Adressbereich eine angegebene Adresse enthält, wird von GetModuleByOffset zurückgegeben. Diese Methode kann verwendet werden, um den Modulindex unter Berücksichtigung der Basisadresse des Moduls zu ermitteln.
Die folgenden Methoden geben Informationen zu Modulen zurück, die entweder durch die Basisadresse oder den Index angegeben werden:
Die Namen eines Moduls werden von GetModuleNames und GetModuleNameString zurückgegeben.
Versionsinformationen für das Modul werden von GetModuleVersionInformation zurückgegeben.
Einige der Parameter, die zum Beschreiben eines Moduls verwendet werden, werden von GetModuleParameters zurückgegeben. Ausführliche Informationen zu den von dieser Methode zurückgegebenen Parametern finden Sie unter DEBUG_MODULE_PARAMETERS.
Entladene Module
Beim Debuggen im Benutzermodus werden entladene Module nur in Windows Server 2003 und höheren Versionen von Windows nachverfolgt. In früheren Versionen von Windows wurden nur entladene 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. Entladene Module können verwendet werden, um Fehler zu analysieren, die durch den Versuch verursacht werden, entladenen Code aufzurufen.
Synthetische Module
Synthetische Module können erstellt werden, um eine Speicherregion zu bezeichnen. 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 mit RemoveSyntheticModule entfernt werden. Wenn Sie alle Module im Ziel neu laden, werden alle synthetischen Module gelöscht.
Bildpfad
Der Pfad des ausführbaren Images wird von der Engine bei der Suche nach ausführbaren Images verwendet.
Der Pfad des ausführbaren Images kann aus mehreren Verzeichnissen bestehen, die durch Semikolons (;) getrennt sind. Diese Verzeichnisse werden in der richtigen Reihenfolge durchsucht.
Eine Übersicht über den Pfad des ausführbaren Images finden Sie unter Pfad für ausführbare Bilder.
Um dem Pfad des ausführbaren Images ein Verzeichnis hinzuzufügen, verwenden Sie die Methode AppendImagePath. Der gesamte pfad des ausführbaren Images wird von GetImagePath zurückgegeben und kann mit SetImagePath geändert werden.
Weitere Informationen
Weitere Informationen zu Prozessen und virtuellen Prozessen finden Sie unter Threads und Prozesse.