Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Damit 32-Bit-Anwendungen auf einem 64-Bit-Betriebssystem ausgeführt werden können, muss zusätzlich zum 64-Bit-Benutzermodusanzeigetreiber ein 32-Bit-Anzeigetreiber für den 64-Bit-Benutzermodus bereitgestellt werden, den 64-Bit-Anwendungen erfordern. Auf einem 64-Bit-Betriebssystem ist jedoch nur die 64-Bit-Version eines Display-Miniporttreibers erforderlich. Windows unter Windows (WOW64) ermöglicht die Ausführung von 32-Bit-Anwendungen auf einem 64-Bit-Betriebssystem. Weitere Informationen finden Sie unter Unterstützen von 32-Bit-E/A im 64-Bit-Treiber.
Um einen 32-Bit-Anzeigetreiber für den Benutzermodus auf einem 64-Bit-Betriebssystem zu installieren, muss der folgende Eintrag in einem Add-Registry-Abschnitt der INF-Datei für den Anzeigeminiporttreiber des Grafikgeräts festgelegt werden. Dies muss geschehen, damit der DLL-Name des 32-Bit-Anzeigetreibers im Benutzermodus während der Treiberinstallation zur Registrierung hinzufügt wird.
[Xxx_SoftwareDeviceSettings]
...
HKR,, UserModeDriverNameWow, %REG_MULTI_SZ%, Xxx.dll
...
Die INF-Datei muss Informationen enthalten, damit das Betriebssystem den 32-Bit-Anzeigetreiber für den Benutzermodus in das %systemroot%verzeichnis "\SysWOW64" des Systems kopieren kann. Weitere Informationen finden Sie unter der Richtlinie INF CopyFiles Directive und im Abschnitt INF DestinationDirs.
Da WOW64 keine undurchsichtigen oder nicht typisierten Datenstrukturen wie die D3DDDICB_ALLOCATE Struktur verarbeiten kann, die über die pfnAllocateCb-Funktion übergeben wird, kann keine automatische Konvertierung von 32 Bit auf 64 Bit ausgeführt werden. Damit WOW64 ordnungsgemäß funktioniert, müssen Sie die folgenden Elemente berücksichtigen, wenn Sie einen 32-Bit-Anzeigetreiber für den Benutzermodus schreiben, der auf einem 64-Bit-Betriebssystem ausgeführt wird:
Vermeiden Sie Zeiger oder Datentypen, die für mehrere Betriebssysteme vertraulich sind, z. B. SIZE_T oder HANDLE. Zusammen mit der Größe der gesamten Strukturvariablen machen diese Datentypen mit variabler Breite die Ausrichtung und Position einzelner Elemente unterschiedlich. Wenn Elemente mit variabler Breite unvermeidbar sind, können Sie ein weiteres Element hinzufügen, um anzugeben, dass die Datenstruktur von einem 32-Bit-Anzeigetreiber für den Benutzermodus stammt. Der 64-Bit-Display-Miniporttreiber kann dann die Konvertierung ordnungsgemäß ausführen.
Auch wenn Elemente mit variabler Breite nicht vorhanden sind, müssen Sie möglicherweise architekturspezifische Ausrichtungsanforderungen berücksichtigen. Bei x64 sollte ein UINT64 (oder QWORD) beispielsweise 8-Byte-ausgerichtet sein. Da ein von einem standardmäßigen 32-Bit-Compiler kompilierter 32-Bit-Anzeigetreiber im 32-Bit-Modus diese nativen 64-Bit-Bit-Typen möglicherweise nicht richtig ausrichten kann, kann der 64-Bit-Miniporttreiber möglicherweise nicht korrekt auf Daten vom 32-Bit-Benutzermodusanzeigetreiber zugreifen. Sie können jedoch die Ausrichtung erzwingen, indem Sie die entsprechenden pragma-Compilerdirektiven verwenden. Obwohl die Verwendung von pragma-Compilerdirektiven auf 32-Bit-Betriebssystemen zu einem geringen Speicherverlust führen kann, ermöglicht dies Ihnen, identische 32-Bit-Benutzermodus-Anzeigetreiber auf sowohl 32-Bit- als auch 64-Bit-Betriebssystemen zu verwenden. Wenn Sie die Ausrichtung nicht mithilfe der entsprechenden Pragma-Compilerdirektiven erzwingen können, muss sich der 32-Bit-Anzeigetreiber, der mit WOW64 unter einem 64-Bit-Betriebssystem ausgeführt wird, vom 32-Bit-Anzeigetreiber unterscheiden, der auf einem 32-Bit-Betriebssystem ausgeführt wird.