애플리케이션 매니페스트

영향을 받는 플랫폼

클라이언트 - Windows 7
서버 - Windows Server 2008 R2

기능 영향

심각도 - 낮음
빈도 - 낮음

설명

Windows 7에서는 애플리케이션 매니페스트에 "호환성"이라는 새 섹션이 도입되었습니다. 이 섹션은 Windows에서 애플리케이션이 대상으로 하도록 디자인된 Windows 버전을 결정하는 데 도움이 되며, Windows에서 애플리케이션이 대상으로 지정한 Windows 버전에 따라 애플리케이션이 기대하는 동작을 제공할 수 있도록 합니다.

호환성 섹션을 통해 Windows는 기존 소프트웨어에 대한 호환성을 유지하면서 새 개발자가 만든 소프트웨어에 새로운 동작을 제공할 수 있습니다. 또한 이 섹션은 Windows가 이후 버전의 Windows에서도 더 큰 호환성을 제공하는 데 도움이 됩니다. 예를 들어 호환성 섹션의 Windows 7에 대해서만 지원을 선언하는 애플리케이션은 이후 버전의 Windows에서 Windows 7 동작을 계속 수신합니다.

변경 내용의 표현

매니페스트에 호환성 섹션이 없는 애플리케이션은 기본적으로 Windows 7 및 이후 Windows 버전에서 Windows Vista 동작을 수신합니다. Windows XP 및 Windows Vista는 이 매니페스트 섹션을 무시하고 영향을 주지 않습니다.

다음 Windows 구성 요소는 Windows 7의 호환성 섹션에 따라 서로 다른 동작을 제공합니다.

RPC 기본 스레드 풀

  • Windows 7: RPC는 확장성을 개선하고 스레드 수를 줄이기 위해 NT 스레드 풀(기본 풀)로 전환했습니다. Windows Vista의 경우 RPC는 프라이빗 스레드 풀을 사용했습니다.
    • Win7용으로 컴파일된 이진 파일의 경우 기본 풀이 사용됩니다.
    • RPC API가 호출되기 전에 I_RpcMgmtEnableDedicatedThreadPool 호출되면 프라이빗 스레드 풀이 사용됩니다(Vista 동작).
    • RPC 호출 후 I_RpcMgmtEnableDedicatedThreadPool 호출되면 기본 풀이 사용되고 I_RpcMgmtEnableDedicatedThreadPool 오류 1764를 반환하며 요청된 작업은 지원되지 않습니다.
  • Windows Vista(기본값): Windows Vista 이하용으로 컴파일된 이진 파일의 경우 프라이빗 풀이 사용됩니다.

DirectDraw 잠금

  • Windows 7: Windows 7에 대해 매니페스트된 애플리케이션은 DDRAW에서 Lock API를 호출하여 기본 데스크톱 비디오 버퍼를 잠글 수 없습니다. 이렇게 하면 오류가 발생하며 주 데이터베이스에 대한 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 동작 이전에 이 경합을 방지하려는 애플리케이션은 겹치는 이벤트를 기다려야 하며 신호를 받으면 bWait == FALSE를 사용하여 GetOverlappedResult를 호출합니다.

프로그램 호환성 도우미(PCA)

  • Windows 7: 호환성 섹션이 있는 애플리케이션은 PCA 완화를 받지 않습니다.
  • Windows Vista(기본값): 일부 특정 상황에서 제대로 설치하지 못하거나 런타임 중에 크래시가 발생하는 애플리케이션은 PCA 완화를 가져옵니다. 자세한 내용은 참조 섹션을 참조하세요.

기능 기능 활용

운영 체제 지원에 대한 최신 호환성 정보로 애플리케이션 매니페스트를 업데이트합니다. 섹션에서는 매니페스트에 추가된 내용에 대해 설명합니다.

  • 네임 스페이스: Compatibility.v1(xmlns="urn:schemas-microsoft-com:compatibility.v1">)

  • 섹션 이름: 호환성(새 섹션)

  • SupportedOS: 지원되는 운영 체제의 GUID - 지원되는 운영 체제에 매핑되는 GUID는 다음과 같습니다.

    • Windows Vista용 {e2011457-1546-43c5-a5fe-008deee3d3f0} : 스위치백 컨텍스트의 기본값입니다.
    • Windows 7용 {35138b9a-5d96-4fbd-8e2d-a2440225f93a} : 애플리케이션 매니페스트에서 이 값을 설정한 애플리케이션은 Windows 7 동작을 가져옵니다.

    참고

    Microsoft는 필요에 따라 향후 Windows 버전에 대한 GUID를 생성하고 게시합니다.

     

다음은 업데이트된 매니페스트의 예입니다.

참고

애플리케이션 매니페스트의 특성 및 태그 이름은 대/소문자를 구분합니다.

 

<?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 7에서 Windows Vista 동작을 사용하여 애플리케이션이 제대로 작동하는지 확인합니다.

알려진 문제

컨텍스트 불일치 애플리케이션은 Windows 7 또는 Windows Server 2008 R2의 x64 버전을 실행하는 컴퓨터의 Windows 7 컨텍스트 대신 Windows Vista 컨텍스트에서 실행됩니다.

솔루션 업데이트 지원되는 모든 x64 기반 버전의 Windows 7 및 Windows Server 2008 R2와 지원되는 모든 Itanium 기반 버전의 Windows Server 2008 R2에 대해 이 문제를 해결할 수 있습니다. KB 978637 대한 Microsoft 지원 페이지로 이동합니다. 자세한 내용은 Windows 7 또는 Windows Server 2008 R2의 x64 버전을 실행하는 컴퓨터의 Windows 7 컨텍스트 대신 Windows Vista 컨텍스트에서 애플리케이션이 실행되고 시스템에 대한 올바른 버전을 다운로드합니다.

크래시 덤프 진단 차단됨

솔루션 KB 976038 대한 Microsoft 지원 페이지로 이동합니다. 추가 세부 정보는 64비트 버전의 Windows에서 실행되는 애플리케이션에서 throw되는 예외는 무시됩니다.