Windows Vista 호환성 점검 (3) - Shim? 심? 도대체 이게 뭐지?

 

Shim이라고 들어보셨나요? 성이 '심'씨이신 분들은 많이 영문이름에 쓰시는 것이죠.. :)
갑자기 Windows Vista에서 왠 Shim을 찾느냐라고 하시는 분이 계실 것입니다.
Windows Vista에서는 Shim Technology가 호환성 측면에서 매우 큰 일을 담당하고 있습니다.

열심히 노력하여 프로그램을 개발한 과거가 있으신 경우를 가정합시다. 운영 체제가 버전업이 되고, 그당시에는 최신의 API가 지금의 운영 체제에선 더이상 지원하지 않는 API인 경우가 있습니다. 이때, 현재 존재하지 않는 Win32 API에 대한 호출을 후킹(Hooking)하여, 구 기능을 대체하는 다른 API로 전달해주는 기술입니다. 이러한 Shim을 이용하여, 최신 운영 체제에 맞도록 수정하는 동안, 레가시 응용 프로그램을 사용할 수 있게 해준다는 것입니다.

일반적으로 Shim은 1개 이상의 API Hook을 가지고 있으며, DLL에서 Shim을 구현할 수 있습니다. Windows Vista의 경우, Application Compatibility Toolkit내 Compatibility Administrator를 이용하여 Shim에 대한 기능을 구현한 후, 이를 Application Compatibility Database와 연결할 수 있습니다.

이를 잘 이용하시면, 이전 운영 체제에서만 구동되거나, 호환성에 문제가 있는 레가시 응용 프로그램의 대부분을 Windows Vista로 이전하여 그대로 사용하실 수 있습니다. 아래 그림과 같이 이슈를 해결하는 방법론을 쿼리할 수 있습니다.

설정한 각종 호환성 이슈 정보를 사용하기 위해 Shim Engine은 아래 그림과 같은 정보를 프로그램과 비교하여, 해당 프로그램의 정보를 설정합니다.

생성된 Shim Database (Sdb)는 명령어를 이용하셔서(Sdbinst.exe) 기존 응용 프로그램 호환성 데이터베이스와 합칠 수 있습니다.

차후 응용 프로그램은 해당 Shim 정보를 이용하여 호환성 이슈 없이 사용할 수 있습니다. :)