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.
Betroffene Plattformen
Clients – Windows 7
Server – Windows Server 2008 R2
Auswirkung von Features
Schweregrad – Niedrig
Häufigkeit - Niedrig
Beschreibung
Windows 7 führt einen neuen Abschnitt im Anwendungsmanifest mit dem Namen "Kompatibilität" ein. Dieser Abschnitt hilft Windows, die Versionen von Windows zu ermitteln, auf die eine Anwendung ausgerichtet wurde, und ermöglicht Windows das Verhalten bereitzustellen, das die Anwendung basierend auf der Von der Anwendung erwarteten Version von Windows erwartet.
Im Abschnitt "Kompatibilität" kann Windows neue Verhaltensweisen für neue Entwickler erstellte Software bereitstellen und gleichzeitig die Kompatibilität für vorhandene Software beibehalten. Dieser Abschnitt hilft Windows auch bei der Bereitstellung einer größeren Kompatibilität in zukünftigen Versionen von Windows. Beispielsweise erhält eine Anwendung, die die Unterstützung nur für Windows 7 im Abschnitt "Kompatibilität" deklariert, weiterhin Windows 7-Verhalten in zukünftigen Versionen von Windows.
Manifestation des Wandels
Anwendungen ohne Kompatibilitätsabschnitt in ihrem Manifest erhalten standardmäßig windows Vista-Verhalten unter Windows 7 und zukünftigen Windows-Versionen. Beachten Sie, dass Windows XP und Windows Vista diesen Manifestabschnitt ignorieren und keine Auswirkungen darauf haben.
Die folgenden Windows-Komponenten bieten ein abweichendes Verhalten basierend auf dem Abschnitt "Kompatibilität" in Windows 7:
RPC-Standardthreadpool-
-
Windows 7: Um die Skalierbarkeit zu verbessern und die Threadanzahl zu reduzieren, wechselt RPC zum NT-Threadpool (Standardpool). Für Windows Vista hat RPC einen privaten Threadpool verwendet.
- Für Binärdateien, die für Win7 kompiliert wurden, wird der Standardpool verwendet.
- Wenn I_RpcMgmtEnableDedicatedThreadPool aufgerufen wird, bevor eine RPC-API aufgerufen wird, wird der private Threadpool verwendet (Vista-Verhalten)
- Wenn I_RpcMgmtEnableDedicatedThreadPool nach einem RPC-Aufruf aufgerufen wird, wird der Standardpool verwendet, I_RpcMgmtEnableDedicatedThreadPool gibt den Fehler 1764 zurück, und der angeforderte Vorgang wird nicht unterstützt.
- Windows Vista (Standard): Für Binärdateien, die für Windows Vista und darunter kompiliert wurden, wird der private Pool verwendet.
DirectDraw Lock
- Windows 7: Anwendungen, die für Windows 7 manifestiert sind, können die Sperr-API in DDRAW nicht aufrufen, um den primären Desktopvideopuffer zu sperren. Dies führt zu Einem Fehler, und NULL- Zeiger für die Primäre zurückgegeben wird. Dieses Verhalten wird auch dann erzwungen, wenn die Desktopfenster-Manager-Komposition nicht aktiviert ist. Windows 7-kompatible Anwendungen dürfen den primären Videopuffer nicht sperren, um gerendert zu werden.
- Windows Vista (Standard): Anwendungen können eine Sperre für den primären Videopuffer erwerben, da ältere Anwendungen von diesem Verhalten abhängig sind. Wenn Sie die Anwendung ausführen, wird der Desktopfenster-Manager deaktiviert.
DirectDraw-Bitblockübertragung (Blt) zu Primär ohne Clipping-Fenster
- Windows 7: Anwendungen, die für Windows 7 manifestiert sind, werden daran gehindert, Blt auf den primären Desktopvideopuffer ohne Einschneidefenster auszuführen. Dies führt zu Einem Fehler, und der Blt-Bereich wird nicht gerendert. Windows erzwingt dieses Verhalten auch dann, wenn Sie die Desktopfenster-Manager-Komposition nicht aktivieren. Windows 7-kompatible Anwendungen müssen blt auf ein Beschneidungsfenster anwenden.
- Windows Vista (Standard): Anwendungen müssen in der Lage sein, das primäre Fenster ohne Beschneidungsfenster zu verwenden, da ältere Anwendungen von diesem Verhalten abhängig sind. Wenn Sie diese Anwendung ausführen, wird der Desktopfenster-Manager deaktiviert.
GetOverlappedResult-API-
- Windows 7: Löst eine Racebedingung auf, in der eine Multithread-App mit GetOverlappedResult ohne Zurücksetzen des Ereignisses in der überlappenden Struktur zurückgegeben werden kann, wodurch der nächste Aufruf dieser Funktion vorzeitig zurückgegeben wird.
- Windows Vista (Standard): Stellt das Verhalten mit der Racebedingung bereit, von der Anwendungen möglicherweise abhängig sind. Anwendungen, die dieses Rennen vor dem Windows 7-Verhalten vermeiden möchten, sollten auf das überlappende Ereignis warten und wenn dies signalisiert wird, rufen Sie GetOverlappedResult mit bWait == FALSEauf.
Programmkompatibilitäts-Assistent (PCA)
- Windows 7: Anwendungen mit Kompatibilitätsabschnitt erhalten nicht die PCA-Entschärfung.
- Windows Vista (Standard): Anwendungen, die während der Laufzeit nicht ordnungsgemäß installiert oder abstürzen, erhalten unter bestimmten Umständen die PCA-Gegenmaßnahme. Weitere Informationen finden Sie im Referenzabschnitt.
Nutzen von Featurefunktionen
Aktualisieren Sie das Anwendungsmanifest mit den neuesten Kompatibilitätsinformationen für die Unterstützung des Betriebssystems. Im Abschnitt werden die Ergänzungen zum Manifest beschrieben:
Namespace: Compatibility.v1 (xmlns="urn:schemas-microsoft-com:compatibility.v1">)
Abschnittsname: Kompatibilität (neuer Abschnitt)
SupportedOS: GUID des unterstützten Betriebssystems – Die GUIDs, die den unterstützten Betriebssystemen zugeordnet sind:
- {e2011457-1546-43c5-a5fe-008deee3d3f0} für Windows Vista: Dies ist der Standardwert für den Switchbackkontext.
- {35138b9a-5d96-4fbd-8e2d-a2440225f93a} für Windows 7: Anwendungen, die diesen Wert im Anwendungsmanifest festlegen, erhalten das Windows 7-Verhalten.
Anmerkung
Microsoft generiert und postt bei Bedarf GUIDs für zukünftige Windows-Versionen.
Im Folgenden sehen Sie ein Beispiel für ein aktualisiertes Manifest.
Anmerkung
Bei den Attribut- und Tagnamen im Anwendungsmanifest wird die Groß-/Kleinschreibung beachtet.
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
<application>
<!--The ID below indicates application support for Windows Vista -->
<supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}"/>
<!--The ID below indicates application support for Windows 7 -->
<supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}"/>
</application>
</compatibility>
</assembly>
Der Wert des Hinzufügens von GUIDs für beide Betriebssysteme im obigen Beispiel ist die Bereitstellung von Unterstützung auf down-level.the value of adding GUIDs for both operating systems in the above example is to provide down-level support. Anwendungen, die beide Plattformen unterstützen, benötigen keine separaten Manifeste für jede Plattform.
Kompatibilitäts-, Leistungs-, Zuverlässigkeits- und Benutzerfreundlichkeitstests
- Testen Sie die Anwendung mit dem neuen Kompatibilitätsbereich und
SupportedOS ID ={35138b9a-5d96-4fbd-8e2d-a2440225f93a}, um sicherzustellen, dass die Anwendung mit dem neuesten Windows 7-Verhalten ordnungsgemäß funktioniert. - Testen Sie die Anwendung mit dem neuen Kompatibilitätsbereich und
SupportedOS ID ={e2011457-1546-43c5-a5fe-008deee3d3f0}(oder ohne diesen Abschnitt vollständig), um sicherzustellen, dass die Anwendung ordnungsgemäß mit den Windows Vista-Verhalten unter Windows 7 funktioniert.
Bekannte Probleme
Kontextkonflikt Eine Anwendung wird in einem Windows Vista-Kontext statt in einem Windows 7-Kontext auf einem Computer ausgeführt, auf dem eine x64-Edition von Windows 7 oder Windows Server 2008 R2 ausgeführt wird.
Lösung Updates stehen zur Verfügung, um dies für alle unterstützten x64-basierten Versionen von Windows 7 und Windows Server 2008 R2 sowie für alle unterstützten Itanium-basierten Versionen von Windows Server 2008 R2 zu korrigieren. Wechseln Sie zur Microsoft-Supportseite für KB-978637: Eine Anwendung wird in einem Windows Vista-Kontext statt in einem Windows 7-Kontext auf einem Computer ausgeführt, auf dem eine x64-Edition von Windows 7 oder von Windows Server 2008 R2 ausgeführt wird, um weitere Details zu erhalten und die richtige Version für Ihr System herunterzuladen.
Absturzabbilddiagnose blockiert
Lösung Wechseln Sie zur Microsoft-Supportseite für KB-976038: Ausnahmen, die von einer Anwendung ausgelöst werden, die in einer 64-Bit-Version von Windows ausgeführt wird, werden für weitere Details ignoriert.
Links zu anderen Ressourcen
- QueryActCtxW-Funktion
- UAC-Manifest-
- Anwendungsmanifesten für Windows-Anwendungen
- Desktop Window Manager (DWM)
- Kontextkonfliktaktualisierung