Text Services Framework
- other webpage : http://windowssdk.msdn.microsoft.com/en-gb/library/ms629032.aspx
Text Services Framework
Overview of text services framework for theTablet PC.
When the Text Services Framework (TSF) is enabled on a control with a PenInputPanel object attached, it allows the PenInputPanel object to insert text directly. If the control does not support Text Services Framework (TSF), the PenInputPanel object must resort to using the SendInput function to insert text.
The ability to insert text directly becomes very important on East Asian systems, where using the SendInput function can produce incorrect characters.
TSF provides an interface for correcting recognition errors enabling the end user to correct, rewrite, or even dictate the proper text.
TSF is enabled by calling the EnableTsf method with the enable parameter set to TRUE.
[C#]
PenInputPanel thePenInputPanel = new PenInputPanel(theControl);
//...
thePenInputPanel.EnableTsf(true);
A PenInputPanel object attached to a InkEdit Read the rest of this entry »
Telephony Application Programming Interface
The Telephony Application Programming Interface (TAPI) is an API, which enables PCs running Microsoft Windows to use telephone services. Different versions of TAPI are available on different versions of Windows. TAPI was introduced in 1993 as the result of joint development by Microsoft and Intel. The first publicly available version of TAPI was version 1.3, which was released as a patch on top of Microsoft Windows 3.1. Version 1.3 is no longer supported, although some MSDN development library CDs still contain the files and patch.
With Microsoft Windows 95, TAPI was integrated into the operating system. The first version on Windows 95 was TAPI 1.4. That version was not very different from 1.3. The biggest enhancement of TAPI 1.4 was support for 32-bit applications.
The TAPI standard supports both connections from individual computers and LAN connections serving any number of computers.
TAPI 2.0 was introduced with Windows NT 4.0. Version 2.0 was the first version on the Windows NT platform. It made a nice step forward by supporting some ACD and PBX specific functionality.
In 1997, Microsoft released TAPI version 2.1. This version of TAPI was available as a downloadable update and was the first version to be supported on both the Microsoft Windows 95 and NT/2000 platforms.
TAPI 3.0 was released in 1999 together with Windows 2000. This version enables IP telephony by providing simple and generic methods for making connections between two (using H.323) or more (using IP Multicast) computers and now also offers the ability to access any media streams involved in the connection.
The release of Windows XP included TAPI 3.1. TAPI 3.1 supports the Microsoft Component Object Model and provides a set of COM objects to application programmers. This version uses File Terminals which allow applications to record streaming data to a file and play this recorded data back to a stream. A USB Phone TSP (TAPI Service Provider) was also included which allows an application to control a USB phone and use it as a streaming endpoint.
The Telephony Server Application Programming Interface (TSAPI) is a similar standard developed by Novell for NetWare servers.
[edit]
TAPI 2.x vs TAPI 3.x
It is a common error to think that TAPI 3.0 (or TAPI 3.1) is the “improved” version of TAPI 2.x. The fact is that TAPI 2.x is written in C/C++ so that it could be accessible from C/C++ or unmanaged code. On the other hand, TAPI 3.x is designed with the COM (Component Object Model) interface, with the intention of making it accessible from managed code (.NET environment). TAPI 3.x has a slightly different set of functions and does not neccessarily support all functionalities that TAPI 2.x does. One of the most noticeable differences between those two are the supports to Phone class (speakerphone volume control in particular), for that TAPI 2.x appears to be the better choice for programmer.
[edit]
TAPI compliant hardware
Telephony hardware that supports TAPI includes most voice modems and some telephony cards such as Dialogic boards.
TAPI
|
TAPI[태피]는 전화나 비디오폰을 통해 사용자나 컴퓨터가 전세계 어디에 있는 사람들(또는 전화에 연결된 자원들)과도 통화를 할 수 있도록 해주는 프로그램의 표준 인터페이스를 말한다. 자신의 컴퓨터에 TAPI가 장착되어 있고, 관련 응용 프로그램과 하드웨어 설정이 올바르게 되어있다고 가정하면, 다음과 같이 해 볼 수 있을 것이다.
인텔과 마이크로소프트가 협력하여 개발한 TAPI는 윈도우95/98 및 NT 운영체계에 포함되어 있다. TAPI를 사용하면, 프로그래머들은 보통의 PSTN, 디지털 ISDN 그리고 사설교환기 등을 포함한 다른 전화 시스템들에 대해 자세한 내용을 알지 못하더라도 된다는 장점이 있다. 각 전화시스템 하드웨어 제공자 (예를 들어 모뎀 제작자나 ISDN 카드 제작자)가 자신의 하드웨어와 직접 접속할 수 있도록 특유한 소프트웨어 드라이버를 제공한다. |
|
TAPI는 다이얼링과 통화 단절에 관한 고급 인터페이스를 제공한다. 다이얼링을 위해 ATDT 스트링을, 전화를 끊기 위해 ATH 스트링을 인코드하는 대신, 프로그래머는 보다 간단한 “function call”을 사용하면 된다.
TAPI는 응용프로그램 인터페이스에 추가하여, 드라이버 소프트웨어를 작성하는 하드웨어 공급자들을 위해 SPI (Service Provider Interface)를 포함하고 있다. TAPI DLL이 API를 SPI에 사상시키고 입출력 량을 조화시킨다.
픽셀, 인터레이스(i), 프로그레스(p)
■ 가장 큰 차이는 해상도…. 픽셀은 작아지고 픽셀수는 많아져
TV나 모니터 등의 디스플레이는 가까이 다가가면 작은 점들을 볼 수 있다. 이 작은 점들 하나 하나가 각자 다른 색을 내면서 마치 모자이크처럼 디스플레이에 화면을 만들어 낸다. 조금 과장해서 그리면 아래 그림과 같이 생각할 수 있다.

![]()
768 해상도는 이 픽셀이 가로로 1366개가 나열된 줄이 세로로 768 줄이 있다는 것을 의미한다.


각각의 점들은 위 그림과 같이 적, 녹, 청 세가지 색의 ‘서브픽셀’이 모여 이루어진 것으로 이를 ‘픽셀(pixel)’이라고 한다. 우리가 흔히 이야기 하는 해상도는 보통 이 pixel의 개수를 나타낸다. HD급인 1366 * 따라서 동일한 인치의 제품에서는 해상도가 높을수록 픽셀의 사이즈는 작아지고, 픽셀의 개수는 많아지게 된다. 픽셀의 사이즈가 작을수록 이미지가 더 선명해 보이게 되는데, 이는 같은 대상을 30만 화소 카메라와 500만 화소 카메라로 촬영하여 출력했을 때 나타나는 화질의 차이와 비슷하게 생각하면 이해가 쉽다. 또, 픽셀의 개수가 많아지면 화면에 표현할 수 있는 정보의 양이 더 많아지게 된다.
HD TV와 Full HD TV를 비교하는 데 픽셀과 해상도에 대한 얘기를 꺼낸 것은 바로 HD TV와 Full HD TV의 가장 큰 차이 중 하나가 바로 해상도이기 때문이다. HD TV의 경우 화면을 보여주는 패널의 해상도가 1280 * 720 또는 1366 * 768인 반면, Full HD TV의 경우 1920 * 1080으로 전체 픽셀의 개수는 2배나 된다. 같은 42인치 사이즈에서 비교하면 Full HD TV가 HD TV보다 화면의 픽셀 수도 많고 픽셀 사이즈가 더 작다.
■ 입력신호가 풀HD급이어야 화면도 풀HD
그러나 화면 해상도가 1920 * 1080 이라고 해서 모두 Full HD TV라고 할 순 없다. 기존 출시되었던 제품 중 일부는 화면 해상도는 Full HD급인데, Full HD급 영상 신호를 받아들이지 못해 결과적으로 화질은 HD급으로만 보여주는 것들도 있었기 때문이다.
Full HD TV의 선명하고 섬세한 화질로 시청을 하고 싶다면, Full HD급인 1080p 규격의 영상 신호를 입력해야 한다.
먼저, 영상신호에 대한 이해를 위해 간단히 사진을 비유해 보았다.
[그림 A]
[그림B]
[그림C]
사진 A와 B는 실제로는 한 사진을 축소한 것이지만, 이를 화소수가 다른 카메라로 촬영했다고 가정하자. 사진 A를 찍은 카메라보다 사진 B를 찍은 카메라가 화소수가 더 작은 카메라로 볼 수 있다. 이럴 경우 이미 촬영 당시부터 사진의 화질이 서로 다르게 된다.(사진 A가 더 화질이 좋다.) 사진 B를 사진 A의 크기로 확대하면 사진 A와 동일한 화질이 되는 것이 아니라 사진 C와 같이 약간 흐릿해진 이미지가 되는 것을 알 수 있다.
TV 자체는 Full HD TV라 하더라도 촬영 자체를 Full HD가 아닌 일반 HD 화질로 한 영상을 시청하면 이를 Full HD 화질이 아닌 HD 화질로 보게 된다는 것을 비유하기 위해 위의 예를 들어 보았다.
디지털 영상신호의 규격은 480i, 480p, 720p. 1080i, 1080p 등이 있다.
여기서 숫자는 영상 신호의 세로 해상도를 나타내는 것으로 숫자가 클수록 고화질의 영상신호임을 나타낸다. 숫자 뒤에 붙은 알파벳 p와 i에 대해서는 조금 뒤에 살펴보고 먼저 각 입력 신호와 디스플레이 해상도와의 관계를 잠시 살펴보자.
480p는 DVD의 영상 신호 규격으로, 480p해상도의 화질은 디스플레이의 세로 해상도가 ‘480’ 이상이면 즐길 수 있다.
720p와 1080i는 HD TV의 영상 신호 규격이다. 720p는 디스플레이의 세로 해상도가 ‘720’, 1080i는 디스플레이의 세로해상도가 ‘540’ 이상이 되면 영상 신호에 걸맞는 화질을 보여 줄 수 있다.
1080p는 Full HD급의 영상 신호 규격으로 최근 DVD에 이어 차세대 저장장치로 소개되고 있는 HD-DVD와 블루레이 디스크의 영상 신호 규격과 동일하다. 이 1080p 영상은 디스플레이의 세로 해상도가 ‘1080’ 이상일 때 최고 화질로 볼 수 있다.
단순화 해서 480p와 720p, 1080p를 역시 사진 이미지로 이해하면 아래와 같다.
그림 A. 480p 영상 신호 (SD급) |
||
![]() |
||
그림 B. 720p 영상 신호 (HD급)

그림 C. 1080p 영상 신호 (Full HD급)
영상 신호 규격을 나타내는 숫자가 클수록 더 크고 섬세한 이미지를 볼 수 있다.
위의 480p, 720p, 1080p에 비유된 사진 이미지를 1080p의 사진 이미지 크기로 확대해 보았다. (이는 영상 신호가 480p, 720p, 1080p인 영상을 Full HD TV로 시청할 경우를 비유하기 위한 작업이다.)
그림 D. 그림 A를 그림 C 크기로 확대한 이미지 |
||
![]() |
||
그림 E. 그림 B를 그림 C 크기로 확대한 이미지

그림 F. 그림 C 이미지
480p 사진과 720p 사진은 상대적으로 흐릿해지는 것을 알 수 있다. Full HD TV로 480p나 720p 영상 신호를 재생했을 때 화질이 Full HD 급이 아닌 DVD나 HD급으로 보게 됨을 직관적으로 살펴보기 위한 예다.
다시 그림 A, B, C 세 사진을 480p의 영상 신호를 비유한 첫 번째 사진 크기로 모두 맞춰보자. (이는 영상 신호가 480p, 720p, 1080p인 영상을 SD급 해상도(480p)의 TV로 시청할 경우를 비유하기 위한 작업이다.)
그림 G. 그림 A 이미지 |
||
![]() |
||
그림 H. 그림 B를 그림 A크기로 축소한 이미지

그림 I. 그림 C를 그림 A크기로 축소한 이미지
이 경우 세 사진 모두 선명도가 비슷함을 알 수 있다. 이는 HD나 Full HD급 영상 신호를 일반 SD급 출력 해상도를 가진 디스플레이로 시청할 경우 모두 SD급 화질로 보게 됨을 알 수 있다.
■ 1080i와 1080p는 주사방식의 차이
이러한 영상 신호의 규격 뒤에 붙은 i, p 알파벳은 또 다른 의미를 담고 있다.
p는 ‘progressive’의 첫 자를 나타내는 것으로 순차주사 방식으로 부른다. i는 ‘interlace’의 약자로 우리 말로는 비월주사 방식이라고 부른다.
일반적으로 TV 화면은 1초에 60회 정도 깜빡이면서 영상을 재생한다. 이 때, 순차주사 방식은 1/60초 동안 온전한 한 화면을 보여주는 반면 비월주사 방식은 1/30초 동안 온전한 한 화면을 보여준다.
단순화해서 다시 사진 이미지를 가지고 비교해 보면 아래와 같다.
![]() |
그림 A. 디스플레이에 나타나는 화면
그림A와 같은 이미지를 표현하기 위해서 순차주사 방식 (progressive)은 1/60초 동안 1번부터 15번까지 온전한 한 화면을 한번에 다 보여주는 방식이다. 즉, 1초 동안 그림 B와 같은 화면이 60번 깜빡이게 된다.
![]() |
그림 B 순차 주사 방식 (progressive)
반면 비월 주사 방식 (interlace)은 1/60초는 그림 C-(가)를 그 다음 1/60초는 그림 C-(나)를 보여주는 식으로 번갈아 가면서 보여준다. 즉, 1초 동안 그림 C-(가)를 30번, 그림 C-(나)를 30번 보게 되어 우리 눈은 마치 그림 A를 보는 듯한 느낌을 받게 되는 방식이다.
그림 C-(가) 비월 주사 방식 (interlace) |
||
![]() |
||
그림 C-(가) 비월 주사 방식 (interlace)
즉 같은 화면을 전송하게 되는 경우 progressive 방식은 interlace 방식보다 용량이 더 많게 된다.
컴포지트 비디오, S-비디오, 컴포넌트 비디오/프로그레시브 스캔 출력/비디오 디스플레이
1. 컴포넌트
S비디오의 색신호가 붉은색과 푸른색 신호로 나뉘어 영상 케이블이 3개로 늘어났다.
아날로그와 디지털 방식을 모두 지원해 고급 AV기기의 인터페이스로 사용된다.
컴포지트·S비디오와 함께 아날로그 전송방식 시대에 나타난 인터페이스로
1080i, 720p, 480P, 480i의 해상도를 지원한다.
2. S비디오
S는 분리(Separate)라는 뜻이다.
컴포지트 단자의 영상신호를 밝기(휘도)와 색신호도 분리, 전송한다.
컴포지트단자에서 나타나는 해상도 저하, 색번짐 등을 억제하며, 아날로그 방식에서 최적의 화질을 제공한다.
DVD플레이어, VCR, 모니터, 앰프 등에서 두루 사용된다.
480p, 480i의 해상도를 지원한다.
3. 컴포지트
가장 일반적인 영상단자로 빨강·흰색·노랑의 세 케이블로 구성됐다.
빨강과 흰색은 좌우 오디오 채널을, 노란색은 통합영상신호를 전송하는데 AV제품에 기본적으로 채용된 인터페이스다. 색 정보와 밝기 신호를 동시에 혼합해 보여주는 터라 상이한 신호가 섞여 화질이 떨어진다. X박스나 플레이스테이션 등 게임기는 대부분 컴포지트 단자를 이용한다.
아날로그 TV때부터 사용했던 단자로 480i의 해상도를 지원한다.
——————————————————————————————————————–
컴포지트 비디오, S-비디오, 컴포넌트 비디오
VCR, LD플레이어, DVD 플레이어, 그리고 비디오 모니터는 RCA 단자를 통해 컴포지트(composite) 비디오 신호를 출력합니다. 컴포지트 신호에는 밝기 정보, 색상 정보 그리고 동기 신호를 포함하는 신호가 결합되어 있습니다. 이란 신호들을 하나로 함침으로써 기존의 흑백 텔레비전 시스템을 못 쓰게 만들지 않으면서도 컬러를 추가할 수 있었습니다.
그렇지만 이렇게 신호를 혼합하면 간섭으로 인해 화질이 떨어지기 때문에 분리하는편이 유리합니다. 그래서 처음 고안된 것은 다수의 VCR, LD 플레이어, DVD 플레이어, 그리고 비디오 모니터에서 볼 수 있는 S-비디오 케이블 입니다. S-비디오 케이블은 화면의 밝기 정보를 컬러 정보와 별도로 나우어서 전송합니다. S-비디오는 컴포지트 방식으로 신호를 저장하는 VHS와 LD 소스에서는 별 효과가 없지만, 비디오 신호를 별도로 저장하는 DVD와 DSS 소스에서는 상당한 개선 효과가 있습니다.
다음으로 고안된 것은 컴포넌트(component) 비디오 연결 방식입니다. 보통 RCA 단자가 달린 3개의 분리된 케이블로 휘도 정보를 한 케이블에, 적색(red) 컬러 정보를 다른 케이블에, 그리고 청색(blue) 컬러 정보를 세 번째 케이블에 전송합니다. 컴포넌트 비디오는 또한 Y, R-Y, B-Y라고도 합니다. Y는 휘도 신호를 나타내며, R-Y는 적색에서 휘도 신호를 뺀 것, 그리고 B-Y는 청색 정보에서 휘도 신호를 제거한 것입니다.
DVD와 DSS에서는 원래 비디오 정보를 컴포넌트 형태로 전송합니다. 컴포넌트 방식으로 비디오 모니터와 DVD 플레이어를 연결하면 NTSC(National Television Standards Committee) 방식의 문제점이 나타나지 않습니다. 컴포지트와 컴포넌트 연결 방식을 DVD 플레이어를 사용해서 비교하면 낮과 밤만큼의 차이가 있습니다. 컴포지트 방식으로 연결한 DVD 화질에는 닷 크롤(dot crawl), 크로마 노이즈(chroma noise), 모아레 패턴(moire pattern), 흑백 정보를 컬러 정보로 오해하는 문제 등이 발생합니다. 그러므로 컴포넌트 비디오 단자가 있는 DVD 플레이어와 모니터를 선택하는 것은 훌륭한 투자입니다. 또 컴포넌트 연결 방식은 프로그레시브 스캔 DVD 플레이어의 연결에도 사용 됩니다.
프로그레시브 스캔 출력
최신의 DVD 플레이어들은 프로그레시브 스캔(progressive scan) 비디오 출력 기능을 제공하고 있습니다. 이 기능은 프로그레시브 스캔 비디오를 입력받을 수 있는 TV 세트와 함께 사용할 때 더욱 나은 화질을 제공합니다. 프로그레시브 스캔의 작동 원리를 이해하려면 일반적인 TV가 인터레이스 스캔 방식으로 작옹한다는 사실을 알아야 합니다.
인터레이스 스캔 방식에서는 영상을 나타내는 주사선이 화면의 가장 위 왼쪽에서 시작되어 빠르게 오른쪽으로 이동하고 다시 아래로 내려갑니다. 그런데 주사선이 처음부터 끝까지 계속 이어서 내려가는 것이 아니라 처음에는 하나씩 건너뛰어 내려가서 홀수 번째 경로만 지나갑니다. 그리고 두 번째 지나갈 때는 짝수 번째 경로만 지나갑니다. 이처럼 인터레이스 스캔 방식은 한 화면을 두 번에 나누어 표시하지만 그 속도가 빠르기 때문에 우리 눈에는 하나의 화면으로 보입니다. 북미와 한국, 일본 등에서 사옹되는 NTSC 텔레비전 시스템에서는 1초에 30개의 ‘프레임(frame)’을 보여붑니다. 프레임이란 홀수 번째 주사선과 짝수 번째 주사선이 합쳐서 한 장의 완성된 화면을 말합니다. 인터레이스 스캔 방식은 전송 효율이 높기 때문에 TV 방송 방식으로 채택되었습니다.
이와 달리 프로그레시브 스캔 방식에서는 주사선이 처음부터 끝까지 계속 이어서 내려가며 인터레이스 방식의 거의 2배인 1초당 60개의 프레임을 보여줍니다. 주사선의 수가 2배인 만큼 화면의 해상도가 뛰어나며 이동 물체의 윤곽선의 들쭉날쭉해지는 모션 아티팩트(motion artifact) 현상도 적습니다.
DVD에 저장된 비디오 포맷은 원래가 프로그레시브 스캔 형태입니다. 최근 판매되는 디지털 텔레비전은 DVD의 신호를 프로그레시브 스캔 방식 그대로 받아들이므로 훨씬 뚸어난 화질을 감상할 수 있습니다.
비디오 디스플레이
모든 홈 시어터 시스템에는 비디오 디스플레이(vide display), 또는 비디오 모니터(video monitor)가 필요합니다. 대부분의 홈 시어터에서는 우리에게 친숙한 기존 TV 세트, 다른 이름으로는 직시형(direct-view) 방식의 텔레비젼을 사용합니다. TV는 대각선으로 측정한 화면 튜브의 크기로 나타냅니다. 25인치 근처의 TV 세트로는 홈 시어터 시스템을 구성할 수 있지만, 본격적인 홈 시어터 시스템을 위해서는 최소 32인치를 고려하게 됩니다. 34인치나 36인치 TV는 화면이 크지만 32인치에 비교하면 가격이 훨씬 높습니다. 가장 큰 직시형 TV는 무려 40인치나 되는데 상당히 고가입니다.
35인치 이상의 화면 크기에서는 리어 프로젝션(rear-projection) 세트가 좋은 선택입니다. 직시형 TV처럼 비디오 이미지를 브라운관에 직접 투사하지 않고 렌즈와 거울을 사용하여 스크린 뒤에서 프로젝터의 전면에 장착된 스크린에 이미지를 투사합니다. 사람들이 ‘대형 스크린’TV에 대해 이야기할 때는 보통 리어 프로젝터를 언급합니다.
리어 프로젝터는 대략 40인치 크기에서 시작해서 60인치에 이릅니다. 이들의 화질은 밝기나 선명도 면에서 일반적인 TV에 비해 떨어지지만 이런 단점을 화면의 크기로 보상합니다. 리더 프로젝트는 홈 시어터 애호가에게 가장 인기 있는 선택입니다.
진지한 비디오파일에게는 프런트 프로젝터(front-projector)가 궁극의 품질을 제공합니다. 리어 프로젝터처럼 주로 3개의 렌즈를 사용하지만, 그 이미지를 방의 멀리 떨어진 곳에서 별도의 스크린에 투사합니다. 이제까지 논한 다른 세트와 달리 프런트 프로젝터의 이미지 사이즈는 고정되어 있지 않습니다. 스크린 사이즈와 프로젝터, 스크린 사이의 거리를 변화시킴으로써, 여러분이 원하는 거의 어떤 사이즈로도 화면을 만들 수 있습니다. 최고급 프런트 프로젝터에서는 150인치(대각선으로 측정할 때)에 달하는 스크린 사이즈도 가능합니다.
프런트 프로젝터는 라인 더블러(line doubler)나 라인 쿼드러플러(line quadrupler)라는 장치를 사용해서 화질을 더 좋게 할 수 있습니다. 이런 장치는 투사되는 주사선의 수를 증가시켜서 비디오 포맷의 고유한 선 구조를 보지 않도록 해줍니다. 라인 더블러의 가격은 수천 달러 정도이며 최고급 홈 시어터 시스템에만 사용됩니다.
Hive
x86에서 간단히 사용할 수 있는 방법을 적어 보았습니다.
간단하지만 유용하게 사용되길 바랍니다…
■ Test 환경
- WinCE5.0 + VIA(PLE) 800 + HDD(DOM 256MB)
■ Test 방법
1. 아래 컴포넌트를 추가
- Hive-based Registry, FAT File System, ATAPI PCI/IDE Storage Block Driver
2. PB Menu > Platform > Settings…에서 Environment 탭으로 이동하고 New하여 아래 환경변수 추가
- PRJ_BOOTDEVICE_ATAPI = 1
- PRJ_ENABLE_FSMOUNTASROOT = 1
- PRJ_ENABLE_FSREGHIVE = 1
3. PB Menu > Sysgen > Build OS > Sysgen 하여 다시 Build 함.
4. OS Download 후 레지스트리를 변경하고 다시 부팅한다.(레지스트리가 변경된 것으로 되어 있는지 확인).
5. Hive완료.
Build Phases
In Platform Builder, when you choose to build a run-time image based on an operating system (OS) design, the build system executes sequential phases:
- The Compile Phase
- The Sysgen Phase
- The Release Copy Phase
- The Make Run-Time Image Phase
Each phase also executes a secondary phase defined as the Localize phase, when resources and executables are translated into selected locales. For more information about localization, see OS Localization.
The build system completes the following tasks during these phases:
- Generates header files
- Links modules
- Copies the resulting modules to a release directory
- Generates a run-time image
Target devices can include a variety of devices, including the Emulator or a CEPC. For more information, see
Emulator and
How to Set Up a CEPC.
The following image map shows the sequence of large-scale tasks in the build process.
To link to topics containing information about the elements in the image map, move your pointer over the element and then choose the element.

Include some files in the O/S
Windows CE 5.0 – Include some files in the O/S
source : http://blogs.msdn.com/mikehall/archive/2004/07/26/197337.aspx
This question has come up a number of times recently – You’ve built your Windows CE 5.0 operating system, you’ve written the worlds coolest Windows CE application in eMbedded Visual C++ or Visual Studio .NET 2003 and now want to include the applicaiton and a bunch of support files into the final operating system image – but how to make this happen ?
There are a number of steps needed to add a new file or application to the operating system.
First, the file(s) need to be in your _FLATRELEASEDIR, this is the build release directory – typically C:\Wince500\PBWorkspaces\<Your_Workspace>\RelDir\ – you would normally expect to find a Debug and Release subfolder here – so you need some way to copy your files into this folder.
Second, you *may* have registry information associated with your application or driver, so you need to be able to add your own .REG file or modify the existing project.reg
Next, you might want to have specific O/S dependencies for your application – what if your application is a C# .NET Compact Framework application, in this case you would want to set dependencies on SYSGEN_DOTNET – and possibly other O/S dependencies – you could add these dependencies through the Platform | Setitngs menu option, but this would set the dependencies for this build of the O/S – if you generate another platform that also included this application then you would also need to remember to set the environment variables for the new platform.
And what about setting the startup location of the application – by default all application binaries for the O/S are in the \windows folder, you might want to auto-start your application at boot time, in this case you can either add a [HKLM\Init] key to the registry or map the application to the \Windows\Startup folder – and this needs modifications to a .DAT file.
So, right now you need to modify .BIB, .REG, .DAT files, set SYSGEN dependencies through Platform | Settings, and also somehow copy your applicaiton and support files to the _FLATRELEASEDIR – sounds like a ton of work to accomplish what would appear to be a simple task, right ?
Wouldn’t it be SO much easier to have an ‘atomic’ stand-alone component that contained it’s own BIB, REG, DAT, DB files, that also contained the set of O/S dependencies needed on the O/S, and lived in the catalog so it was portable between operating system platforms ? (and could be shared with other developers). You Bet !
As mentioned earlier, I had a number of questions about adding an application to a Windows CE 5.0 O/S image that I decided to write an FAQ around this process – I got about 30 minutes into the process and then decided to give up ! – Was this because I’d not had my Grande Vanilla Latte for the day ? – no, it’s because I decided the best way to do would be to create a tool that makes this process simple.
Introducing CEFileWiz - a ”Skunk” development project that will hopefully save you a ton of time when adding files or applications to a Windows CE 5.0 O/S image.
Here’s how the UI looks…
Simply add your files (notice how the application will automatically show the files/applications in FILES or MODULES sections) – Also note how, when you add a .NET Compact Framework application that the application is added to the FILES section – this is needed for the .NET Compact Framework application to run correctly on the Windows CE device.
That’s the files added to the “component” – what about setting dependencies on the O/S ? – simple, click the “Add SYSGEN’s” button and start adding SYSGEN variables – what ? – you don’t know what the SYSGEN is that you need ? – go take a look at the catalog in Platform Builder – right click on a component and hit the SYSGEN tab – here’s the SYSGEN information for the .NET Compact Framework
The CEFileWiz application detects that an application is .NET Compact Framework and automatically adds the appropriate SYSGEN’s to the project, like so – you can see that SYSGEN_DOTNET, DOTNET_SUPPORT, and VS_SD_AUTH (the Visual Studio .NET 2003 Smart Device Authentication Utilities) have all been added to the project – you can also add your own SYSGEN’s to the project, for example adding SYSGEN_HTTPD would add the HTTP Web Server to your O/S image.
So, that leaves three items to complete.
Component Name- This is the, errr, ummm, name of the component as you want it to appear in the Windows CE 5.0 Catalog.
Platform – Select the Windows CE 5.0 Platform you want to add this project folder to
Device Folder- Where you want the files to be mapped in the O/S image (by default this is the \Windows folder) – if you want your application in the \Windows\Startup Folder then simply change the text to be \Windows\Startup – the project will create any folders that don’t exist in the O/S image.
and now, hit Build… That’s it ! – your component is now created… Here’s how the output folder looks.
Notice the list of files that have been created in the output folder.
Foo.bib – the files to be added to the O/S image
Foo.cec – the .CEC file to be added to Platform Builder
Foo.dat – Folders to be created in the O/S
Foo.db – Database (normally empty)
Foo.pbpxml – the workspace file (pointed to by the .CEC file)
Foo.reg – the registry file (add your custom registry information here)
makefile – Makefile
postlink.bat – This batch file is called in the build process and copies all the files in this component to the _FLATRELEASEDIR
prelink.bat – Empty (dummy) batch file
projsysgen.bat – the projsysgen.bat file adds the O/S dependencies to the O/S (through the SYSGEN variables)
readme.txt – a list of what’s been added to this component.
sources – makefile for the component
All we need to do now is add the .CEC file that’s been created to Platform Builder – in Platform builder, go to File | Manage Catalog Items, add the .CEC file you’ve just created, then, under Third Party Components either drag your new component over to your platform workspace or right click and “add”.
Now build your platform – that’s it ! – A couple of clicks, add some dependency information and you’re all set to have a stand-alone component that exposes it’s own set of registry information, folders, BIB, etc…
Let me know if this tool is at all useful…
- Mike
해상도별 정리
QQQVGA 80×60
QQVGA 160×120
QVGA 320×240
QCIF 176×144
CIF 352×288
VGA 640×480
SVGA 800×600
XGA 1024×768
SXGA 1280×1024
VXGA 1600×1200









