Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Platformy
Klienci — Windows 8
Servers — Windows Server 2012
Opis
Sekcja zgodności manifestu aplikacji (wykonywalnego) wprowadzona w systemie Windows pomaga systemowi operacyjnemu określić wersje systemu Windows, które aplikacja została zaprojektowana pod kątem docelowej. Ponadto manifest aplikacji umożliwia systemowi Windows zapewnienie zachowania oczekiwanego przez aplikację na podstawie wersji systemu Windows przeznaczonej dla aplikacji.
Sekcja zgodności manifestu umożliwia systemowi Windows zapewnienie nowego zachowania nowo utworzonego oprogramowania przy zachowaniu zgodności istniejącego oprogramowania. Ta sekcja pomaga systemowi Windows zapewnić większą zgodność w przyszłych wersjach systemu Windows. Na przykład aplikacja deklarując obsługę tylko systemu Windows 8 w sekcji zgodności będzie nadal otrzymywać zachowanie systemu Windows 8 w przyszłych wersjach systemu Windows.
Manifestacja
Aplikacje bez sekcji zgodności w manifeście będą domyślnie miały zachowanie systemu Windows Vista w systemach Windows 7 i Windows 8 i przyszłych wersjach systemu Windows. Należy pamiętać, że systemy Windows XP i Windows Vista ignorują tę sekcję manifestu i nie mają na nie wpływu.
Te składniki systemu Windows zapewniają rozbieżne zachowanie na podstawie sekcji zgodności:
domyślna pula wątków wywołania procedury zdalnej (RPC)
Windows 8 i Windows 7: Aby zwiększyć skalowalność i zmniejszyć liczbę wątków, RPC przełączył się do puli wątków NT (pula domyślna). W przypadku systemu Windows Vista RPC używał prywatnej puli wątków:
- W przypadku plików binarnych skompilowanych dla systemu Windows 7 i nowszych wersji systemu Windows używana jest domyślna pula.
- Jeśli I_RpcMgmtEnableDedicatedThreadPool jest wywoływany przed wywołaniem dowolnego interfejsu API RPC, używana jest pula wątków prywatnych (zachowanie Vista).
- Jeśli I_RpcMgmtEnableDedicatedThreadPool jest wywoływana po wywołaniu wywołania RPC, używana jest pula domyślna, I_RpcMgmtEnableDedicatedThreadPool zwraca błąd 1764, a żądana operacja nie jest obsługiwana.
Windows Vista (wartość domyślna): w przypadku plików binarnych skompilowanych dla systemu Windows Vista i starszych wersji systemu Windows jest używana pula prywatna.
blokady DirectDraw
- Windows 8 i Windows 7: Aplikacje manifestowane dla systemu Windows 7 i nowszych wersji systemu operacyjnego nie mogą wywoływać interfejsu API blokady w programie DDRAW, aby zablokować podstawowy bufor wideo pulpitu; Spowoduje to wystąpienie błędu i zostanie zwrócony wskaźnik NULL dla elementu podstawowego. To zachowanie jest wymuszane, nawet jeśli kompozycja menedżera okien pulpitu nie jest włączona. Aplikacje ze zgodnością zadeklarowaną dla systemu Windows 7 lub nowszego nie mogą blokować podstawowego buforu wideo do renderowania.
- Windows Vista (ustawienie domyślne): aplikacje mogą uzyskać blokadę podstawowego buforu wideo, ponieważ starsze aplikacje zależą od tego zachowania; uruchomienie aplikacji powoduje wyłączenie Menedżera okien pulpitu.
transferu bloków bitowych DirectDraw (bitblt) do podstawowego bez okna wycinków
- Windows 8 i Windows 7: aplikacje manifestowane dla systemu Windows 7 i nowszych wersji systemu Windows nie mogą wykonywać bitblt w podstawowym buforze wideo pulpitu bez okna wycinków; Spowoduje to wystąpienie błędu, a obszar bitblt nie zostanie renderowany. System Windows wymusza to zachowanie, nawet jeśli nie włączysz opcji Kompozycja Menedżera okien pulpitu. Aplikacje ze zgodnością zadeklarowaną dla systemu Windows 7 i nowszych muszą wykonać bitblt w oknie wycinki.
- Windows Vista (ustawienie domyślne): aplikacje muszą mieć możliwość wykonania bitblt do podstawowego bez okna wycinków, ponieważ starsze aplikacje zależą od tego zachowania; uruchomienie tej aplikacji powoduje wyłączenie Menedżera okien pulpitu.
getOverlappedResult API
- Windows 8 i Windows 7: Rozwiązuje warunek wyścigu, w którym aplikacja wielowątkowy przy użyciu GetOverlappedResult może powrócić bez resetowania zdarzenia w nakładanej strukturze, powodując następne wywołanie tej funkcji, aby powrócić przedwcześnie.
- Windows Vista (wartość domyślna): zapewnia zachowanie warunku wyścigu, od którego aplikacje mogą mieć zależność. Aplikacje, które muszą unikać tego wyścigu przed zachowaniem systemu Windows 7, powinny czekać na nakładające się zdarzenie i po zasygnalizowanym wywołaniu metody GetOverlappedResult z bWait == FALSE.
stan motywów powłoki w trybie dużego kontrastu
- Windows 8: zwraca rzeczywisty stan motywu dla w trybie dużego kontrastu.
- Windows 7: zwraca motyw jako niedostępny w trybie dużego kontrastu, ponieważ usługa DWM jest nadal włączona.
- Windows Vista (wartość domyślna): zwraca motyw jako niedostępny w trybie dużego kontrastu, ponieważ usługa DWM jest nadal włączona.
Shell iPersistFile::Save, metoda
Windows 8: CShellLink::Save teraz określa, czy program obsługi IPersistFile jest wywoływany z argumentem ścieżki względnej i kończy się niepowodzeniem wywołania, jeśli tak jest.
Publiczna dokumentacja opisujący to zachowanie wskazuje, że argument ścieżki musi być ścieżką bezwzględną:
System Windows 7 i wcześniejsze (ustawienie domyślne): CShellLink::Save nie określa, czy program obsługi plików iPersistFile wysyła sprawdzanie ścieżki względnej i umożliwia aplikacjom kontynuowanie pracy ze ścieżkami bezwzględnymi lub względnymi.
asystenta zgodności programu (PCA)
- Windows 8: Aplikacje z sekcją zgodności nie otrzymują środków zaradczych dotyczących pca.
- Windows 7: Aplikacje ze zgodnością są śledzone pod kątem potencjalnych problemów ze zgodnością w przypadku zmian systemu Windows 8 (opisanych w tym dokumencie).
- Windows Vista (wartość domyślna): aplikacje, które nie mogą instalować poprawnie lub ulegać awarii w czasie wykonywania w określonych okolicznościach, uzyskają środki zaradcze dotyczące pca. Aby uzyskać więcej informacji, zobacz sekcję Zasoby.
Korzystanie z funkcji
Zaktualizuj manifest aplikacji przy użyciu najnowszych informacji o zgodności pod kątem obsługi systemu operacyjnego. W tej sekcji opisano dodatki do manifestu:
Przestrzeń nazw: Compatibility.v1 (xmlns="urn:schemas-microsoft-com:compatibility.v1">)
Nazwa sekcji: zgodność (nowa sekcja)
SupportedOS: identyfikator GUID obsługiwanego systemu operacyjnego — identyfikatory GUID mapowane na obsługiwane systemy operacyjne to:
{e2011457-1546-43c5-a5fe-008deee3d3f0}
dla Windows Vista: jest to wartość domyślna kontekstu switchback
{35138b9a-5d96-4fbd-8e2d-a2440225f93a}
dla windows 7: aplikacje, które ustawiają tę wartość w manifeście aplikacji, uzyskują zachowanie systemu Windows 7
{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}
dla systemu Windows 8: aplikacje, które ustawiają tę wartość w manifeście aplikacji, uzyskują zachowanie systemu Windows 8
Firma Microsoft w razie potrzeby wygeneruje i opublikuje identyfikatory GUID dla przyszłych wersji systemu Windows.
Przykładowy kod XML zaktualizowanego manifestu:
Nuta
W manifeście aplikacji uwzględniane są nazwy atrybutów i tagów.
<?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 app support for Windows Vista -->
<supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}"/>
<!--The ID below indicates app support for Windows 7 -->
<supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}"/>
<!--The ID below indicates app support for Windows 8 -->
<supportedOS Id="{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}"/>
</application>
</compatibility>
</assembly>
Identyfikatory GUID dla wszystkich systemów operacyjnych w poprzednim przykładzie zapewniają obsługę na poziomie podrzędnym. Aplikacje, które obsługują wiele platform, nie wymagają oddzielnych manifestów dla każdej platformy.
Testy
Aplikacja może określić wiele obsługiwanych identyfikatorów systemu operacyjnego. W przypadku testowania lub testowania aplikacji w tym systemie operacyjnym należy dodać obsługiwany identyfikator systemu operacyjnego. System Windows Vista i wcześniejsze wersje systemu operacyjnego nie zwracają uwagi na te wpisy. Począwszy od systemu Windows 7, system Windows wybierze najwyższy identyfikator GUID wersji w manifeście do uruchomionej wersji systemu Windows i zapewni obsługę aplikacji na tym poziomie. Aby sprawdzić, czy aplikacja działa z nową sekcją zgodności manifestu aplikacji:
- Przetestuj aplikację przy użyciu nowej sekcji zgodności i identyfikatora obsługiwanego systemuOS = { 4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}, aby upewnić się, że aplikacja działa prawidłowo przy użyciu najnowszego zachowania systemu Windows 8.
- Przetestuj aplikację przy użyciu nowej sekcji zgodności i identyfikatora obsługiwanego systemuOS = {35138b9a-5d96-4fbd-8e2d-a2440225f93a}, aby upewnić się, że aplikacja działa prawidłowo przy użyciu zachowania systemu Windows 7.
- Przetestuj aplikację przy użyciu nowej sekcji zgodności i identyfikatora obsługiwanego systemuOS = {e2011457-1546-43c5-a5fe-008deee3d3f0}, aby upewnić się, że aplikacja działa prawidłowo przy użyciu zachowania systemu Windows Vista.
Zasoby
- QueryActCtxW, funkcja
- manifestu kontroli konta użytkownika
- manifesty aplikacji dla aplikacji systemu Windows
- Desktop Window Manager (DWM)
- niezgodność kontekstu
- asystent zgodności programu