Манифест приложения

Затронутые платформы

Клиенты — Windows 7
Серверы — Windows Server 2008 R2

Влияние функции

Серьезность — низкая
частота — низкая

Описание

В Windows 7 представлен новый раздел манифеста приложения с именем "Совместимость". Этот раздел помогает Windows определить версии Windows, предназначенные для целевого приложения, и позволяет Windows обеспечить поведение, которое приложение ожидает на основе версии Windows, на которую нацелено приложение.

Раздел совместимости позволяет Windows предоставлять новое поведение новому программному обеспечению, созданному разработчиком, при сохранении совместимости для существующего программного обеспечения. Этот раздел также помогает Windows обеспечить более высокую совместимость в будущих версиях Windows. Например, приложение, объявляющее поддержку только для Windows 7 в разделе совместимости, будет продолжать получать поведение Windows 7 в будущей версии Windows.

Проявление изменений

Приложения без раздела совместимости в манифесте получат поведение Windows Vista по умолчанию в Windows 7 и будущих версиях Windows. Обратите внимание, что Windows XP и Windows Vista игнорируют этот раздел манифеста и не влияет на них.

Следующие компоненты Windows обеспечивают дивергентное поведение на основе раздела совместимости в Windows 7:

Пул потоков по умолчанию RPC

  • Windows 7: Чтобы повысить масштабируемость и уменьшить количество потоков, RPC переключился в пул потоков NT (пул по умолчанию). Для Windows Vista RPC использовал частный пул потоков.
    • Для двоичных файлов, скомпилированных для Win7, используется пул по умолчанию
    • Если I_RpcMgmtEnableDedicatedThreadPool вызывается перед вызовом любого API RPC, используется пул частных потоков (поведение Vista)
    • Если I_RpcMgmtEnableDedicatedThreadPool вызывается после вызова RPC, используется пул по умолчанию, I_RpcMgmtEnableDedicatedThreadPool возвращает ошибку 1764, а запрошенная операция не поддерживается.
  • Windows Vista (по умолчанию): Для двоичных файлов, скомпилированных для Windows Vista и ниже, используется частный пул.

Блокировка DirectDraw

  • Windows 7: Приложения, манифестированные для Windows 7, не могут вызывать API блокировки в DDRAW, чтобы заблокировать основной буфер видеотрансляции рабочего стола. Это приведет к ошибке, а указатель NULL для первичного будет возвращен. Это поведение применяется, даже если композиция диспетчера окон рабочего стола не включена. Приложения, совместимые с Windows 7, не должны блокировать основной буфер видео для отрисовки.
  • Windows Vista (по умолчанию): Приложения смогут получить блокировку основного буфера видео, так как устаревшие приложения зависят от этого поведения. Запуск приложения отключает диспетчер окон рабочего стола.

Передача битов directDraw (Blt) в основную без окна вырезки

  • Windows 7: Приложения, манифестированные для Windows 7, не позволяют выполнять Blt в основном буфере видео на рабочем столе без окна вырезки. Это приведет к ошибке, и область Blt не будет отображаться. Windows применяет это поведение, даже если вы не включите состав диспетчера окон рабочего стола. Приложения, совместимые с Windows 7, должны быть Blt в окно вырезки.
  • Windows Vista (по умолчанию): Приложения должны иметь возможность Blt к основному окну без вырезки окна, так как устаревшие приложения зависят от этого поведения. Запуск этого приложения отключает диспетчер окон рабочего стола.

GetOverlappedResult API

  • Windows 7: Разрешает состояние гонки, в котором многопоточное приложение с помощью GetOverlappedResult может возвращать без сброса события в перекрывающейся структуре, что приводит к преждевременному возвращению следующего вызова этой функции.
  • Windows Vista (по умолчанию): Предоставляет поведение с условием гонки, от которых могут зависеть приложения. Приложения, желающие избежать этой гонки до поведения Windows 7, должны ожидать перекрывающегося события и при сигнале вызов GetOverlappedResult с bWait == FALSE.

Помощник по совместимости программ (PCA)

  • Windows 7: Приложения с разделом совместимости не получат устранение рисков PCA.
  • Windows Vista (по умолчанию): Приложения, которые не удается установить правильно или завершить работу во время выполнения при определенных обстоятельствах, получат устранение рисков PCA. Дополнительные сведения см. в разделе справки.

Использование возможностей функций

Обновите манифест приложения с последними сведениями о совместимости для поддержки операционной системы. В этом разделе описываются дополнения к манифесту:

  • Пространства имен: Compatibility.v1 (xmlns="urn:schemas-microsoft-com:compatibility.v1">)

  • Имя раздела: Совместимость (новый раздел)

  • Поддерживается: GUID поддерживаемой операционной системы — идентификаторы GUID, которые сопоставляются с поддерживаемыми операционными системами:

    • {e2011457-1546-43c5-a5fe-008deee3d3f0} для Windows Vista: это значение по умолчанию для контекста переключения.
    • {35138b9a-5d96-4fbd-8e2d-a24025f93a} для Windows 7: приложения, устанавливающие это значение в манифесте приложения, получают поведение Windows 7.

    Note

    Корпорация Майкрософт будет создавать и публиковать идентификаторы GUID для будущих версий Windows по мере необходимости.

     

Ниже приведен пример обновленного манифеста.

Note

Имена атрибутов и тегов в манифесте приложения чувствительны к регистру.

 

<?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>

Значение добавления идентификаторов GUID для обеих операционных систем в приведенном выше примере заключается в предоставлении поддержки нижнего уровня. Приложения, поддерживающие обе платформы, не нуждаются в отдельных манифестах для каждой платформы.

Совместимость, производительность, надежность и тестирование удобства использования

  1. Протестируйте приложение с помощью нового раздела совместимости и SupportedOS ID ={35138b9a-5d96-4fbd-8e2d-a2440225f93a} убедитесь, что приложение работает правильно с помощью последнего поведения Windows 7.
  2. Протестируйте приложение с помощью нового раздела совместимости и SupportedOS ID ={e2011457-1546-43c5-a5fe-008deee3d3f0} (или без этого раздела полностью), чтобы убедиться, что приложение работает правильно с помощью поведения Windows Vista в Windows 7

Известные проблемы

Несоответствие контекста Приложение выполняется в контексте Windows Vista вместо контекста Windows 7 на компьютере под управлением x64-разрядных версий Windows 7 или Windows Server 2008 R2.

Решение Обновления доступны для исправления для всех поддерживаемых версий Windows 7 и Windows Server 2008 R2, а также для всех поддерживаемых версий Windows Server 2008 R2 на основе Itanium. Перейдите на страницу поддержки Майкрософт для базы знаний 978637: приложение выполняется в контексте Windows Vista, а не в контексте Windows 7 на компьютере под управлением x64 выпуска Windows 7 или Windows Server 2008 R2 , чтобы получить дополнительные сведения и скачать правильную версию для системы.

Диагностика аварийного дампа заблокирована

Решение Перейдите на страницу поддержки Майкрософт для базы знаний 976038: исключения, создаваемые из приложения, работающего в 64-разрядной версии Windows, игнорируются для получения дополнительных сведений.