Манифест приложения
Затронутые платформы
клиентов — 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 к основному окну без отрезки окна, так как устаревшие приложения зависят от этого поведения. Запуск этого приложения отключает диспетчер окон рабочего стола.
API GetOverlappedResult
- 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.
Заметка
Корпорация Майкрософт будет создавать и публиковать идентификаторы GUID для будущих версий Windows по мере необходимости.
Ниже приведен пример обновленного манифеста.
Заметка
Имена атрибутов и тегов в манифесте приложения чувствительны к регистру.
<?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 для обеих операционных систем в приведенном выше примере заключается в предоставлении поддержки нижнего уровня. Приложения, поддерживающие обе платформы, не нуждаются в отдельных манифестах для каждой платформы.
Совместимость, производительность, надежность и тестирование удобства использования
- Протестируйте приложение с помощью нового раздела совместимости и
SupportedOS ID ={35138b9a-5d96-4fbd-8e2d-a2440225f93a}
, чтобы убедиться, что приложение работает правильно с помощью последней версии поведения Windows 7 - Протестируйте приложение с помощью нового раздела совместимости и
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, а также для всех поддерживаемых версий Windows Server 2008 R2. Перейдите на страницу поддержки Майкрософт для КБ 978637: приложение выполняется в контексте Windows Vista вместо контекста Windows 7 на компьютере под управлением выпуска x64 windows 7 или Windows Server 2008 R2 для получения дополнительных сведений и загрузки правильной версии для системы.
диагностика аварийного дампа заблокирована
решение перейти на страницу поддержки Майкрософт для базы знаний 976038: исключения, создаваемые из приложения, работающего в 64-разрядной версии Windows, игнорируются для получения дополнительных сведений.
Ссылки на другие ресурсы
- функция QueryActCtxW
- манифеста UAC
- манифесты приложений для приложений Windows
- диспетчера окон рабочего стола (DWM)
- обновления несоответствия контекста