액티브 템플릿 라이브러리
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.
1. 개요
액티브 템플릿 라이브러리(ATL)는 마이크로소프트의 C++ 템플릿 라이브러리로, COM(Component Object Model) 객체 개발을 지원한다. MFC(Microsoft Foundation Class Library)보다 가벼운 대안으로, COM 객체 관리를 단순화하기 위한 RAII(Resource Acquisition Is Initialization) 클래스를 포함한다. ATL 버전 7부터 MFC 클래스 일부를 공유하며, Visual Studio 2013 이후 버전에서는 ATL 코드가 정적으로 링크되어 DLL을 제거한다. ATL은 보안 취약점과 DEP(데이터 실행 방지) 호환성 문제와 관련하여 개선되어 왔다. 컴파일러 COM 지원 클래스는 ATL과 함께 또는 ATL을 대신하여 사용할 수 있으며, _com_ptr_t, _bstr_t, _variant_t, _com_error 등이 있다.
더 읽어볼만한 페이지
- C++ 라이브러리 - D-Bus
D-Bus는 2002년에 시작된 프로세스 간 통신 시스템으로, 시스템 버스와 세션 버스를 통해 정보 공유, 모듈성, 권한 격리를 제공하며, 일대일 요청-응답 및 발행/구독 통신 방식을 지원한다. - C++ 라이브러리 - Botan
Botan은 다양한 암호화 알고리즘을 지원하는 암호화 라이브러리이며, RSA, ElGamal, AES, SHA-256 등 널리 사용되는 알고리즘을 포함하여 공개키 암호화, 공개키 서명, 키 교환, 블록 사이퍼, 스트림 사이퍼, 해시 함수 등을 제공한다. - 마이크로소프트 API - 윈도우 API
윈도우 API는 마이크로소프트 윈도우 운영 체제에서 응용 프로그램이 시스템 기능에 접근하도록 돕는 인터페이스 집합이며, 다양한 버전으로 발전해 왔고, 현재 Win32가 널리 사용되며, 유연성을 제공하지만 복잡하다는 단점을 보완하기 위해 다양한 래퍼 라이브러리가 개발되었다. - 마이크로소프트 API - WinFS
WinFS는 마이크로소프트가 개발한 파일 시스템으로, 검색 기능 내장 및 메타데이터 관리를 통해 데이터 관리 효율성을 높이는 것을 목표로 했으나 별도 제품으로 출시되지는 못하고 핵심 기능들이 윈도우 비스타 이후 기술에 통합되었다.
액티브 템플릿 라이브러리 - [IT 관련 정보]에 관한 문서 | |
---|---|
기본 정보 | |
개발자 | 마이크로소프트 |
프로그래밍 언어 | C++ |
운영체제 | 마이크로소프트 윈도우 |
장르 | 라이브러리 또는 프레임워크 |
라이선스 | 사유 |
2. 역사
마이크로소프트 파운데이션 클래스 라이브러리(MFC)를 사용하면 COM 오브젝트를 만들 수 있지만, DLL 지원이 필요한 더 큰 바이너리가 만들어진다.[29] 반면 ATL은 MFC의 그래픽 사용자 인터페이스 부분이 필요하지 않을 때 더 가벼운 대안이 될 수 있다.[30]
ATL 버전 7 (비주얼 스튜디오 2003)은 버전 3 (비주얼 스튜디오 6.0)의 뒤를 잇는 버전으로, CString과 같은 여러 MFC 클래스들을 ATL에서 사용할 수 있게 되었다. 정확히는 두 라이브러리에서 공유되는 ATLMFC 공통 레이어로 이동되었다고 할 수 있다. ATL 버전 7은 CLI 속성과 비슷한 것을 제공하기 위해 C++ 속성들을 도입했지만, 큰 성공을 거두지 못했고 ATL 버전 8 (비주얼 스튜디오 2005)에서 중요성이 낮아졌다. 여러 마법사들은 더 이상 기본적으로 이러한 속성들을 생성하지 않는다. 버전 7에서는 새로운 문자열 변환 클래스도 도입되었다.
2009년 7월 28일, 마이크로소프트는 ATL을 사용하여 만든 액티브X 컨트롤이 원격 코드 실행 보안 취약점에 취약해질 수 있는 버그를 수정하기 위한 패치를 공개하였다.[31]
비주얼 스튜디오 2013 이후, 비주얼 C++ 2013의 ATL 코드는 정적이며, DLL을 제거한다.[32]
2. 1. 버전 발전
COM 오브젝트는 마이크로소프트 파운데이션 클래스 라이브러리(MFC)를 사용하여 만들 수도 있지만 DLL 지원이 필요한 더 큰 바이너리를 만들어낸다.[29] 한편 ATL은 MFC의 그래픽 사용자 인터페이스 부분이 필요하지 않은 상황에서 더 가벼운 대안이 될 수 있다.[30]버전 3(비주얼 스튜디오 6.0)을 직접 잇는 ATL 버전 7(비주얼 스튜디오 2003)에서 CString과 같은 수많은 MFC 클래스들은 ATL에서 이용이 가능하게 되었는데, 두 라이브러리에 의해 공유되는 ATLMFC 공통 레이어로 이동되었다는 표현이 더 정확하다. ATL 버전 7은 또한 CLI 속성과 유사한 것을 제공하기 위해 C++의 속성들을 도입하였으나 이것들은 특히 성공적이지 못했고 ATL 버전 8(비주얼 스튜디오 2005)에서 경시되었다. 다양한 마법사들은 더 이상 기본적으로 이들을 생성하지 않는다. 버전 7은 또한 새로운 문자열 변환 클래스들을 도입하였다.
2009년 7월 28일, 마이크로소프트는 ATL을 사용하여 만든 액티브X 컨트롤이 원격 코드 실행 보안 취약점에 취약해질 수 있는 버그를 수정하기 위한 패치를 공개하였다.[31]
비주얼 스튜디오 2013 이후로, 비주얼 C++ 2013의 ATL 코드는 정적이며, DLL을 제거한다.[32]
2. 2. 보안 문제
2009년 7월 28일, 마이크로소프트는 ATL을 사용하여 생성된 액티브X 컨트롤이 원격 코드 실행 보안 결함에 취약해질 수 있는 버그를 수정하기 위해 ATL에 대한 패치를 출시했다.[10]3. 지원 클래스
ATL은 COM 타입의 관리를 단순화시키는 여러 RAII 클래스들을 포함하고 있다. 가장 일반적으로 쓰이는 클래스들은 다음과 같다.[33][34][35][36]
- `CComPtr
`: 범용 스마트 포인터 - `CComBSTR`: BSTR 래퍼(wrapper)
- `CComVariant`: VARIANT 래퍼
- `CComSafeArray
`: SAFEARRAY 래퍼
3. 1. 주요 지원 클래스
ATL은 COM 형식의 관리를 단순화하기 위해 많은 RAII 클래스를 포함하고 있다. 가장 일반적으로 사용되는 클래스는 다음과 같다.4. 컴파일러 COM 지원
마이크로소프트 비주얼 C++은 COM 타입 관리를 단순화하기 위해 추가적인 C++ RAII 클래스들을 포함하고 있다. 이러한 '컴파일러 COM 지원' 클래스들은 ATL을 대체하거나 ATL과 함께 사용할 수 있다.
4. 1. 컴파일러 지원 클래스
공식적으로 ATL의 일부는 아니지만, 마이크로소프트 비주얼 C++은 COM 타입 관리의 단순화를 위해 추가적인 C++ RAII 클래스들을 포함하고 있다. 이 컴파일러 COM 지원 클래스들은 ATL과 함께, 또는 ATL을 대신하여 사용할 수 있으며 다음을 포함한다:[37][38][39][40]- `_com_ptr_t`[18] COM 인터페이스 이름에 "Ptr" 접미사를 붙여 표현하는 스마트 포인터.
- `_bstr_t`[19] BSTR 래퍼.
- `_variant_t`[20] VARIANT 래퍼.
- `_com_error`[21] HRESULT 래퍼.
비주얼 스튜디오 2012부터 컴파일러 COM 지원 클래스는 SAFEARRAY 래퍼를 포함하지 않는다.
참조
[1]
서적
ATL COM
https://archive.org/[...]
Wrox Press
[2]
서적
Beginning ATL 3 COM Programming
https://archive.org/[...]
Wrox Press
[3]
서적
Visual C++ 6 Unleashed
Sams
[4]
웹사이트
Recommendations for Choosing Between ATL and MFC
https://msdn.microso[...]
Microsoft MSDN
[5]
웹사이트
http://web.archive.o[...]
[6]
웹사이트
https://learn.micros[...]
[7]
웹사이트
https://msrc.microso[...]
[8]
웹사이트
http://web.archive.o[...]
[9]
웹사이트
https://learn.micros[...]
[10]
웹사이트
ATL Security Update
http://msdn.microsof[...]
Microsoft
2009-07-28
[11]
웹사이트
http://web.archive.o[...]
[12]
웹사이트
https://devblogs.mic[...]
[13]
웹사이트
https://learn.micros[...]
[14]
웹사이트
CComPtr Class
https://msdn.microso[...]
Microsoft MSDN
[15]
웹사이트
CComBSTR Class
https://msdn.microso[...]
Microsoft MSDN
[16]
웹사이트
CComVariant Class
https://msdn.microso[...]
Microsoft MSDN
[17]
웹사이트
CComSafeArray Class
https://msdn.microso[...]
Microsoft MSDN
[18]
웹사이트
_com_ptr_t Class
https://msdn.microso[...]
Microsoft MSDN
[19]
웹사이트
_bstr_t Class
https://msdn.microso[...]
Microsoft MSDN
[20]
웹사이트
_variant_t Class
https://msdn.microso[...]
Microsoft MSDN
[21]
웹사이트
_com_error Class
https://msdn.microso[...]
Microsoft MSDN
[22]
웹사이트
共有クラス (ATL/MFC)
https://msdn.microso[...]
[23]
웹사이트
ATL と MFC のバージョン番号
https://msdn.microso[...]
[24]
웹사이트
定義済みマクロ
https://msdn.microso[...]
[25]
웹사이트
ATL and MFC changes and fixes in Visual Studio 2013 - Visual C++ Team Blog - Site Home - MSDN Blogs
http://blogs.msdn.co[...]
[26]
웹사이트
Visual Studio Community 2013 - Visual Studio
https://www.microsof[...]
[27]
서적
ATL COM
https://archive.org/[...]
Wrox Press
[28]
서적
Beginning ATL 3 COM Programming
https://archive.org/[...]
Wrox Press
[29]
서적
Visual C++ 6 Unleashed
Sams
[30]
웹사이트
Recommendations for Choosing Between ATL and MFC
https://msdn.microso[...]
Microsoft MSDN
[31]
웹인용
ATL Security Update
http://msdn.microsof[...]
Microsoft
2009-07-28
[32]
뉴스
ATL and MFC changes and fixes in Visual Studio 2013
http://blogs.msdn.co[...]
[33]
웹사이트
CComPtr Class
https://msdn.microso[...]
Microsoft MSDN
[34]
웹사이트
CComBSTR Class
https://msdn.microso[...]
Microsoft MSDN
[35]
웹사이트
CComVariant Class
https://msdn.microso[...]
Microsoft MSDN
[36]
문서
CComSafeArray Class
https://msdn.microso[...]
Microsoft MSDN
[37]
문서
_com_ptr_t Class
https://msdn.microso[...]
Microsoft MSDN
[38]
문서
_bstr_t Class
https://msdn.microso[...]
Microsoft MSDN
[39]
문서
_variant_t Class
https://msdn.microso[...]
Microsoft MSDN
[40]
문서
_com_error Class
https://msdn.microso[...]
Microsoft MSDN
본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.
문의하기 : help@durumis.com