다음을 통해 공유


활성화 컨텍스트

활성화 컨텍스트는 시스템에서 특정 DLL 버전, COM 개체 instance 또는 사용자 지정 창 버전을 로드하기 위해 애플리케이션을 리디렉션하는 데 사용할 수 있는 정보를 포함하는 메모리의 데이터 구조입니다. 활성화 컨텍스트의 한 섹션에는 DLL 로더에서 사용하는 DLL 리디렉션 정보가 포함될 수 있습니다. 다른 섹션에는 COM 서버 정보가 포함될 수 있습니다. 활성화 컨텍스트 함수는 활성화 컨텍스트를 사용, 생성, 활성화 및 비활성화합니다. 활성화 함수는 애플리케이션의 바인딩을 특정 DLL 버전, 창 클래스, COM 서버, 형식 라이브러리 및 인터페이스를 지정하는 버전 명명된 개체로 리디렉션할 수 있습니다. 활성화 컨텍스트 함수 및 구조에 대한 자세한 내용은 활성화 컨텍스트 참조를 참조하세요.

Windows XP부터 정품 인증 컨텍스트 함수를 사용하면 Windows에서 매니페스트 의 정보를 사용하여 버전 이름이 지정된 개체를 만들 수 있습니다. 애플리케이션이 CreateProcess를 호출하여 프로세스를 만드는 경우 Windows는 애플리케이션 매니페스트가 있는지 확인합니다. 매니페스트가 있는 경우 Windows는 매니페스트의 정보를 사용하여 활성화 컨텍스트를 채웁니다. 매니페스트는 병렬 어셈블리 버전에 대한 애플리케이션의 종속성을 설명하므로 매니페스트의 버전 없이 지정된 개체는 버전 이름 개체에 매핑됩니다. 예를 들어 매니페스트는 DLL, 파일, 창 클래스, COM 서버, 형식 라이브러리 및 인터페이스를 설명할 수 있습니다.

활성화 컨텍스트 내에서 전역 개체가 만들어지면 시스템은 매니페스트를 참조하여 개체에 버전별 이름을 자동으로 지정합니다. 애플리케이션이 실행되고 명명된 개체를 요청하면 버전 이름이 지정된 개체를 가져옵니다. 이렇게 하면 여러 버전의 코드 모듈을 서로 방해하지 않고 동시에 시스템에서 실행할 수 있습니다. 예를 들어 Windows Shell 은 매니페스트를 사용하여 COMCTL32 버전 6.0에 대한 종속성을 설명하고 창 클래스의 버전을 만듭니다.

애플리케이션이 CreateWindow를 호출하여 리소스를 만드는 경우 프로세스는 해당 함수에 대한 클래스 이름을 지정합니다. GetCurrentActCtx 호출은 현재 활성화 컨텍스트를 가져오고 지정된 클래스 이름에 대한 매핑이 있는지 확인합니다. 매핑이 있는 경우 해당 버전의 호출 프로세스를 사용하여 매핑을 resolve 버전별 클래스 이름을 제공합니다. Windows는 해당 클래스 이름 및 버전과 연결된 창 프로시저, 스타일 및 기타 특성을 사용하여 창을 만듭니다.

활성화 컨텍스트는 대부분의 경우 시스템에서 관리됩니다. 애플리케이션 개발자와 어셈블리 공급자는 일반적으로 스택을 호출할 필요가 없습니다. 애플리케이션은 활성화 컨텍스트를 직접 호출하여 활성화 컨텍스트를 관리할 수 있습니다. 자세한 내용은 활성화 컨텍스트 API 사용을 참조하세요.