Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Plataformas
clientes – Windows 8
Servers – Windows Server 2012
Descrição
A seção de compatibilidade do manifesto do aplicativo (executável) introduzido no Windows ajuda o sistema operacional a determinar as versões do Windows que um aplicativo foi projetado para ser direcionado. Além disso, o manifesto do aplicativo permite que o Windows forneça o comportamento que o aplicativo espera com base na versão do Windows que o aplicativo destinou.
A seção de compatibilidade do manifesto permite que o Windows forneça um novo comportamento ao software recém-criado, mantendo a compatibilidade com o software existente. Esta seção também ajuda o Windows a oferecer maior compatibilidade em versões futuras do Windows. Por exemplo, um aplicativo declarando suporte apenas para o Windows 8 na seção de compatibilidade continuará recebendo o comportamento do Windows 8 em versões futuras do Windows.
Manifestação
Aplicativos sem uma seção de compatibilidade em seu manifesto terão o comportamento do Windows Vista por padrão no Windows 7 e windows 8 e versões futuras do Windows. Lembre-se de que o Windows XP e o Windows Vista ignoram esta seção de manifesto e isso não tem impacto sobre eles.
Esses componentes do Windows fornecem um comportamento divergente com base na seção de compatibilidade:
de pool de threads padrão de RPC (chamada de procedimento remoto)
Windows 8 e Windows 7: para melhorar a escalabilidade e reduzir as contagens de threads, o RPC mudou para o pool de threads NT (pool padrão). Para o Windows Vista, o RPC usou um pool de threads privado:
- Para binários compilados para o Windows 7 e versões posteriores do Windows, o pool padrão é usado.
- Se I_RpcMgmtEnableDedicatedThreadPool for chamado antes que qualquer API RPC seja chamada, o pool de threads privado será usado (comportamento do Vista).
- Se I_RpcMgmtEnableDedicatedThreadPool for chamado após uma chamada RPC, o pool padrão será usado, I_RpcMgmtEnableDedicatedThreadPool retornará o erro 1764 e a operação solicitada não terá suporte.
Windows Vista (padrão): para binários compilados para o Windows Vista e versões anteriores do Windows, o pool privado é usado.
de bloqueio do DirectDraw
- Windows 8 e Windows 7: aplicativos manifestados para Windows 7 e versões posteriores do sistema operacional não podem chamar a API de Bloqueio no DDRAW para bloquear o buffer de vídeo da área de trabalho primária; Isso resultará em um erro e um ponteiro NULL para o primário será retornado. Esse comportamento é imposto mesmo se a Composição do Gerenciador de Janelas da Área de Trabalho não estiver ativada. Aplicativos com compatibilidade declarada para Windows 7 e posterior não devem bloquear o buffer de vídeo primário a ser renderizado.
- Windows Vista (padrão): os aplicativos podem adquirir um bloqueio no buffer de vídeo primário, pois os aplicativos herdados dependem desse comportamento; a execução do aplicativo desativa o Gerenciador de Janelas da Área de Trabalho.
transferência de bloco de bits (bitblt) do DirectDraw para o primário sem de janela de recorte
- Windows 8 e Windows 7: os aplicativos manifestados para o Windows 7 e versões posteriores do Windows são impedidos de executar um bitblt no buffer de vídeo da Área de Trabalho principal sem uma janela de recorte; fazer isso resulta em um erro e a área bitblt não será renderizada. O Windows impõe esse comportamento mesmo se você não ativar a Composição do Gerenciador de Janelas da Área de Trabalho. Aplicativos com compatibilidade declarada para Windows 7 e posterior devem executar um bitblt em uma janela de recorte.
- Windows Vista (padrão): os aplicativos devem ser capazes de executar um bitblt no primário sem uma janela de recorte, pois os aplicativos herdados dependem desse comportamento; a execução deste aplicativo desativa o Gerenciador de Janelas da Área de Trabalho.
da API GetOverlappedResult
- Windows 8 e Windows 7: Resolve uma condição de corrida em que um aplicativo multithread usando GetOverlappedResult pode retornar sem redefinir o evento na estrutura sobreposta, fazendo com que a próxima chamada para essa função retorne prematuramente.
- Windows Vista (padrão): fornece o comportamento com a condição de corrida na qual os aplicativos podem ter uma dependência. Os aplicativos que devem evitar essa corrida antes do comportamento do Windows 7 devem aguardar o evento sobreposto e, quando sinalizado, chamar GetOverlappedResult com bWait == FALSE.
status de temas do Shell no modo de alto contraste
- Windows 8: Retorna o status real de temas para quando estiver no modo de alto contraste.
- Windows 7: Retorna temas como indisponíveis quando no modo de alto contraste porque o DWM ainda está ativado.
- Windows Vista (padrão): retorna temas como indisponíveis quando no modo de alto contraste porque o DWM ainda está ativado.
método Shell iPersistFile::Save
Windows 8: CShellLink::Save agora determina se o manipulador IPersistFile é chamado com um argumento de caminho relativo e falha na chamada se for.
A documentação pública que descreve esse comportamento indica que o argumento de caminho deve ser um caminho absoluto:
Windows 7 e anteriores (padrão): CShellLink::Save não determina se o manipulador iPersistFile envia uma verificação de caminho relativo e permite que os aplicativos continuem trabalhando com caminhos absolutos ou relativos.
do PCA (Assistente de Compatibilidade do Programa)
- Windows 8: Os aplicativos com a seção de compatibilidade não obtêm a mitigação de PCA.
- Windows 7: Os aplicativos com a seção de compatibilidade são acompanhados para possíveis problemas de compatibilidade para alterações do Windows 8 (descritos neste documento).
- Windows Vista (padrão): os aplicativos que não instalam corretamente ou falham durante o runtime em algumas circunstâncias específicas obtêm a mitigação de PCA. Para obter mais informações, consulte a seção Recursos.
Aproveitando os recursos de recursos
Atualize o manifesto do aplicativo com as informações de compatibilidade mais recentes para suporte ao sistema operacional. Esta seção descreve as adições ao manifesto:
Namespace: Compatibility.v1 (xmlns="urn:schemas-microsoft-com:compatibility.v1">)
Nome da seção: Compatibilidade (nova seção)
SupportedOS: GUID do sistema operacional com suporte – os GUIDs que são mapeados para os sistemas operacionais com suporte são:
{e2011457-1546-43c5-a5fe-008deee3d3f0}
para do Windows Vista: esse é o valor padrão para o contexto de alternância
{35138b9a-5d96-4fbd-8e2d-a2440225f93a}
para Windows 7: os aplicativos que definem esse valor no manifesto do aplicativo obtêm o comportamento do Windows 7
{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}
para Windows 8: os aplicativos que definem esse valor no manifesto do aplicativo obtêm o comportamento do Windows 8
A Microsoft gerará e postará GUIDs para versões futuras do Windows, conforme necessário.
Um exemplo XML de um manifesto atualizado:
Nota
O atributo e os nomes de marca no manifesto do aplicativo diferenciam maiúsculas de minúsculas.
<?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>
Os GUIDs de todos os sistemas operacionais no exemplo anterior fornecem suporte de nível inferior. Aplicativos que dão suporte a várias plataformas não precisam de manifestos separados para cada plataforma.
Testes
Um aplicativo pode especificar várias IDs do sistema operacional com suporte. Você deve adicionar uma ID do sistema operacional com suporte se tiver testado ou estiver em processo de teste, o aplicativo nesse sistema operacional. O Windows Vista e versões anteriores do sistema operacional não prestam atenção a essas entradas. A partir do Windows 7, o Windows escolherá o GUID de versão mais alta no manifesto até a versão do Windows em execução e dará suporte ao aplicativo nesse nível. Para verificar se o aplicativo funciona com a nova seção de compatibilidade de manifesto do aplicativo:
- Teste o aplicativo com a nova seção de compatibilidade e a ID do SupportedOS = { 4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38} para garantir que o aplicativo funcione corretamente usando o comportamento mais recente do Windows 8.
- Teste o aplicativo com a nova seção de compatibilidade e a ID do SupportedOS = {35138b9a-5d96-4fbd-8e2d-a2440225f93a} para garantir que o aplicativo funcione corretamente usando o comportamento do Windows 7.
- Teste o aplicativo com a nova seção de compatibilidade e a ID do SupportedOS = {e2011457-1546-43c5-a5fe-008deee3d3f0} para garantir que o aplicativo funcione corretamente usando o comportamento do Windows Vista.
Recursos
- da função QueryActCtxW
- de manifesto UAC
- manifestos do aplicativo para aplicativos windows
- do DWM (Gerenciador de Janelas da Área de Trabalho)
- de atualização incompatível de contexto
- assistente de compatibilidade do programa