윈도우 라이브러리 파일

이 글은 마이크로소프트 윈도우 라이브러리 파일들에 대한 설명이다. 마이크로소프트 윈도우 운영 체제는 dll이라고 알려진 라이브러리를 지원하는데, 이것들은 복사본 하나만 메모리에 올라와도 여러 프로세스에서 사용될 수 있는 코드 라이브러리이다. 이 문서는 현재 윈도우에 포함된 코드 라이브러리들의 개요를 제공한다.

Win32 API 
이 단락에 있는2라이브러리들은 각각 다양한 Win32 API들을 구현하는 부분 집합이다.

KERNEL32.DLL 
KERNEL32.DLL은 메모리 관리, 입출력 명령, 프로세스와 스레드 생성, 그리고 동기화 함수들 같은 대부분의 Win32 베이스(base) API들을 응용 프로그램에 내보낸다. 대부분의 것들이 (NTDLL.DLL에 의해 내보내진) 상응하는 네이티브 API를 호출함으로써 KERNEL32.DLL의 내부에 구현되어 있다.

GDI32.DLL 
GDI32.DLL은 그래픽 장치 인터페이스(GDI) 함수들을 노출시키는데, 이것들은 디스플레이나 프린터에 출력되는 원시적인 드로잉 함수들을 수행하는 역할을 한다. 응용 프로그램들은 GDI 함수들을 낮은 수준의 드로잉을 위해 직접적으로 호출한다.

USER32.DLL 
USER32.DLL은 윈도우 USER 구성 요소를 구현한다. 윈도우 구성 요소는 창이나 메뉴 같은 윈도우 사용자 인터페이스의 표준 요소들을 생성하고 다룬다. 그러므로 프로그램들에게 그래픽 사용자 인터페이스(GUI)를 구현할 수 있게 해준다. 프로그램들은 창 생성이나 관리, 그리고 창 메시지 받기 등을 수행하기 위해 윈도우 USER에서 함수들을 호출한다.

GDI에 관한 많은 USER32.DLL 함수들은 GDI32.DLL에 의해 내보내진 것들이다. 어떤 종류의 프로그램들은 또한 GDI 함수들을 직접적으로 호출하여 낮은 수준의 드로잉을 수행하기도 한다.

COMCTL32.DLL 
COMCTL32.DLL는 파일 오픈, 저장, 상태바 같은 다양한 종류의 윈도우 표준 컨트롤을 구현한다. 이것은 이런 UI 요소들을 위한 윈도우를 만들고 관리하기 위해 USER32.DLL와 GDI32.DLL에서 함수들을 호출한다.

다른 API들

SHSCRAP.DLl 
SHSCRAP.DLL은 객체 연결 삽입(OLE) 메커니즘의 한 부분이다. 이것은 셸 스크랩(scrap) 파일들에 대한 지원을 구현한다. (OLE이 가능한 응용 프로그램의 선택된 콘텐츠를 바탕 화면으로 드래그할 때 자동으로 생성됨) 또한 오브젝트 패키저(Object Packager)를 통해 생성할 수도 있다. 이때는 다른 OLE이 가능한 응용 프로그램에 드래그할 수 있다.

이 기능은 윈도우 비스타부터 보안 향상과 일반적으로 사용되지 않은 기능을 삭제하기 위해 제거되었다. 스크랩 (.shs) 파일들은 코드부터 시작해서 다양한 내용을 저장할 수 있어서 바이러스로 사용되어 왔다. 이 기능은 윈도우 XP의 DLL에서 레지스트리 엔트리를 복사해서 다시 복구할 수 있다.

런타임 라이브러리

MSVCRT.DLL, MSVCPP.DLL, CRTDLL.DLL 
MSVCRT.DLL은 비주얼 C++ 버전 4.2부터 6.0까지의 마이크로소프트 비주얼 C 런타임 라이브러리(C++ 라이브러리로는 MSVCPP.DLL)이다. 이것은 이 버전의 비주얼 C++로 컴파일된 프로그램과 C와 C++ 프로그램이 요구하는 일반적인 라이브러리 함수 집합들을 제공한다. 이것들은 문자열 처리와 메모리 할당 그리고 C 스타일 입출력 호출같은 것들을 포함한다.

이것은 윈도우 95 OSR2 버전 이후로 계속되어 왔으며, 이전 버전은 대신 CRTDLL.DLL 라이브러리였다. 오래된 윈도우 버전에서는 MSVCRT.LL에 링크된 프로그램의 호환되는 복사본을 System32 폴더 안에다가 설치하게 했었는데, 이것은 DLL 지옥로 이어지게 된다.

4.0 이전의 비주얼 C++과 7.0 이후 버전은 각각의 버전마다 다른 이름들을 사용했다(MSVCR20.DLL, MSVCR70.DLL, MSVCR71.DLL, MSVCP110.DLL 등). 응용 프로그램들은 적절한 버전의 것들을 설치하도록 요구되었다.

마이크로소프트 비주얼 C++ 런타임은 윈도우에 포함되어 있다. 설치된 운영 체제보다 최신에 나온 런타임들은 비주얼 C++ 재배포 가능 패키지에서 구할 수 있다.

레퍼런스와 디버깅을 위한 런타임 라이브러리의 소스 코드들은 비주얼 C++에 포함되어 있다.(예를 들면 C:\Program Files\Microsoft Visual Studio 11.0\VC\crt\src안에).

이 런타임 라이브러리는 비주얼 C++로 쓰인 프로그램들에 의해 사용된다. 또한 MinGW 컴파일러에서도 사용된다. 몇몇 컴파일러들은 자신들만의 런타임 라이브러리를 가지고 있다.

다른 런타임 라이브러리 
 ATL*.DLL - 액티브 탬플릿 라이브러리(Active Template Library)
 MFC*.DLL - 마이크로소프트 파운데이션 클래스 라이브러리(Microsoft Foundation Classes)
 MSVBVM60.DLL - 비주얼 베이직 6.0 가상 머신 (대신 비주얼 베이직 닷넷 프로그램에는 닷넷 프레임워크가 필요함)

닷넷 프레임워크 라이브러리 
C#, 비주얼 베이직 닷넷, C++/CLI 그리고 .NET 언어로 쓰인 프로그램들은 닷넷 프레임워크를 요구한다. 이것은 많은 라이브러리들과 (예를 들면 mscorlib.dll — Multilanguage Standard Common Object Runtime Library, 이전의 마이크로소프트 공통 오브젝트 런타임 라이브러리(Common Object Runtime Library)) 어셈블리라고 불리는(예를 들면 System.Windows.Forms.dll) 많은 라이브러리를 가지고 있다.

같이 보기 
 윈도우 NT 아키텍처
 윈도우 NT 시작 프로세스

 윈도우 API
 동적 링크 라이브러리

각주

외부 링크 
  API calls list - USER32.DLL - Tips for using the User API Client Library with Visual Basic
  API calls list - KERNEL32.DLL - Tips for using the Kernel API Client Library with Visual Basic
  Native API reference
  Unofficial website that documents most of the Native API methods
  Retrieving the KERNEL32.DLL base address

마이크로소프트 API
윈도우 구성 요소