Frage

enter image description here

Alle WoW64 -Apps gehen durch die WoW64 -Emulationsschicht.
Ich würde gerne wissen, was in dieser Ebene passiert. (Vor allem, wie sie den Adressraum umwandeln können)

Bitte geben Sie mir einige wichtige Punkte.

War es hilfreich?

Lösung

Da Sie das Diagramm bereits gepostet haben, ist klar, dass Sie wissen, warum WOW64 existiert. Nun, um Ihre Frage zu beantworten:

Ich würde gerne wissen, was in dieser Ebene passiert.

Ich denke, Sie möchten wissen, wie es implementiert ist.

Prozessstart: Der Loader lädt 64-Bit-Benutzer-Modus-Teil 'ntdll.dll' wie üblich, lädt aber auch 32-Bit ntdll.dll für den Fall, dass der Prozess für die Ausführung von 32 Bit gilt. Es liegt nun in der Verantwortung der Lader, mit WOW64.DLL zu initialisieren, das Prozess- und Thread-Kontexte in 32-Bit-NTDLL festlegt und die CPU auf den 32-Bit-Modus für die Ausführung umschaltet.

Systemanruf: Jetzt wird alles im 32-Bit-Modus ausgeführt, bis ein Systemaufruf. Wir wissen, dass Systemanrufe ntdll.dll, user32.dll und gdi32.dll usw. durchlaufen; In diesem Fall die 32-Bit-Versionen. Es gibt eine separate 32-Bit-Version dieser Bibliotheken im Ordner windows sywow64. Dies sind nur Stubs, die anstatt "native Systemanrufe" auszugeben, tatsächlich in WoW64.dll anrufen. Jetzt ist es für WoW64.Dll einfach, in den 64-Bit-Modus zu übergehen, Parameter in ihre 64-Bit-Gegenstücke umzuwandeln, den Systemaufruf mit 64-Bit-Versionen auszugeben, das Ergebnis zu erhalten und die Ausgabe in 32-Bit zu wenden. Anschließend wechselt es CPU zurück in den 32-Bit-Modus und gibt den Ausgang zurück.

Ausnahmeversand, Benutzer -Rückrufe, Dateisystem- und Registrierungsvorgänge und E/A werden auf die gleiche Weise behandelt, wobei Hooks irgendwo auf der ganzen Linie verwendet werden. Lesen Sie das unten vorgeschriebene Buch.

(Vor allem, wie sie den Adressraum umwandeln können).

Der 64-Bit-Adressraum ist ein Superset von 32-Bit-Adressraum. Außerdem wird derselbe Zeiger (eigentlich PTE) in 32-Bit/64-Bit nicht verwendet, um sich auf den gesamten Adressraum zu beziehen, aber es gibt separate Seitentabellen für den Benutzerraum und den Systemraum.

Bitte geben Sie mir einige wichtige Punkte.

Um Windows zu kennen, kann ich Ihnen den wichtigsten Punkt geben, um "Windows -Interna" zu lesen - Russinovich

Andere Tipps

Msdn sagt:

WOW64 ist der X86-Emulator, mit dem 32-Bit-Windows-basierte Anwendungen auf 64-Bit-Fenstern nahtlos ausgeführt werden können. WOW64 wird mit dem Betriebssystem versehen und muss nicht explizit aktiviert werden.

Das System isoliert 32-Bit-Anwendungen aus 64-Bit-Anwendungen, einschließlich der Verhinderung von Datei- und Registrierungskollisionen. Konsolen-, GUI- und Service -Anwendungen werden unterstützt. Das System bietet Interoperabilität über die 32/64 Grenze für Szenarien wie Schnitt und Einfügen und COM. 32-Bit-Prozesse können jedoch keine 64-Bit-DLLs für die Ausführung laden, und 64-Bit-Prozesse können keine 32-Bit-DLLs für die Ausführung laden.

Was speziell verstehst du nicht? Hast du das schon gelesen Wikipedia -Artikel Auf dem WOW64 -Subsystem? Ich denke, Sie werden feststellen, dass es einen ziemlich umfassenden Überblick bietet.

Und Microsoft bietet hier einige weitere Details: WOW64 Implementierungsdetails

"Vor allem, wie sie den Adressraum umwandeln können"

Der Schlüssel dazu ist zu wissen, dass AMD- und Intel X64 -Prozessoren Unterstützung für das Ausführen von 32 -Bit- und 64 -Bit -Code nebeneinander haben. Dadurch kann das Betriebssystem (beim Ausführen natives x64) einen Kontext für einen 32 -Bit -Thread erstellen, der 32 -Bit -Adressierung hat, das mit dem 64 -Bit -Thread zusammenfasst

In ähnlicher Weise, wenn das Host -Betriebssystem 32bit ausführt, kann 16 -Bit -Threads für das Ausführen von Win16- und DOS -Anwendungen erstellt werden.

Beachten Sie, dass ich beim Laufen im Betriebssystem 64bit 32 -Bit- und 16 -Bit -Threads erstellen kann - ich denke, AMD hat entschieden, dass dies einfach zu viel Abwärtskompatabilität war :-)

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top