節錄於Mobile01 : (偽)官方 818Pro 繁中 WM6 ROM Evo5.1/EVO6.2文章
IPL SPL
IPL與SPL實質為Windows mobile的Bootloader裡的兩大部份,WM啟動的程序是IPL--SPL--OS
1.IPL 英文全稱是 Initial Program Loader,它負責主板的通電管理並把SPL裝入RAM。
IPL損壞了就把手機拿去扔進河裡吧。
2.SPL 英文全稱是 Second Program Loader,「第二次裝系統」,就是負責裝載OS你好作系統到RAM中。另外SPL還包括許多系統命令,如mtty中使用的命令等。SPL損壞了還可以用燒錄器重寫。
##CONTINUE##
2008年4月17日
IPL與SPL
標籤: WinCE, WinCE Driver
2008年3月3日
仿HTC介面軟體:HTC Cube OpenGL
Basic Navigation:
Adding/Removing a Contact:
##CONTINUE##
Button Functionality:
程式發表區:http://forum.xda-developers.com/showthread.php?t=358102
2008年2月14日
[轉貼]何謂 DirectX?
轉貼:http://www.gamebase.com.tw/forum/content.html?sno=65634843
DirectX 提供存取顯示卡及音效卡的功能,可讓程式提供寫實的立體 (3D) 圖形及環場的音樂及視訊效果。DirectX 是一組低階「應用程式發展介面 (API)」,可提供 Windows 程式高效能硬體加速的多媒體支援。
##CONTINUE##
DirectX 可讓程式輕易地決定電腦的硬體功能,並依此設定符合的程式參數。這可讓多媒體軟體程式在任何具備 DirectX 相容硬體及驅動程式的 Windows 型電腦上執行,並確保多媒體程式能充分利用高效能的硬體。
DirectX 包含一組 API 供存取對高效能硬體進階功能,如 3-D 圖形加速晶片及音效卡。這些 API 控制著低階功能,包含 2-D 圖形加速;支援如搖桿、鍵盤及滑鼠等輸入裝置;以及控制音效混合及輸出。組成 DirectX 的這些元件支援低階功能:
Microsoft DirectDraw
Microsoft DirectDraw API 支援極快速存取電腦視訊介面卡上的加速硬體功能。它支援在所有視訊介面卡上顯示圖形的標準方法,並在使用加速驅動程式時,可以更快且更直接的存取。 DirectDraw 為程式 (如遊戲、2-D 圖形套裝軟體) 及 Windows 系統元件 (如數位視訊轉碼器) 提供一種與裝置無關的方法,以取得對指定顯示裝置的存取功能,而不需使用者提供關於裝置功能額外的資訊。
Microsoft Direct3D
Microsoft Direct3D API (Direct3D) 為內建於大多數新視訊介面卡的 3-D 轉換功能提供一個介面。Direct3D 是低階 3-D API,為軟體程式提供與裝置無關的方法,有效地與加速硬體進行通訊。Direct3D 包括特定之 CPU 指示設定的支援,可提供較新電腦的額外加速功能。
Microsoft DirectSound
Microsoft DirectSound API 提供程式與視訊介面卡的音效混合、播放功能之間的連結。DirectSound 提拱多媒體軟體程式低延遲混音、硬體加速,以及存取音效裝置。它會提供此功能並同時維護與現存裝置驅動程式的相容性。
Microsoft DirectMusic
Microsoft DirectMusic API 是 DirectX 的互動視訊元件。和擷取及播放數位音效範例的 DirectSound API 不同,DirectMusic 是處理數位音訊,以及藉由音效卡或內建的軟體合成器轉換為數位音訊的訊息型音樂資料。DirectMusic API 可支援 Musical Instrument Digital Interface (MIDI) 格式的輸入,並同時支援壓縮及未壓縮的數位音訊格式。 DirectMusic 提供的軟體開發程式具備建立動態音軌的能力,可以回應軟體環境中的各種變更,不僅是直接的使用者輸入。
Microsoft DirectInput
Microsoft DirectInput API 為遊戲、搖桿處理程序輸入,以及其他相關裝置,包含滑鼠、鍵盤及其他遊戲控制器 (如壓力反饋遊戲控制器) 提供進階輸入。
Microsoft DirectPlay
Microsoft DirectPlay API 支援透過數據機、網際網路或 LAN 上的遊戲連線。DirectPlay 簡化了對通訊服務的存取,並且為遊戲提供一種彼此通訊、獨立於基本通訊協定或線上服務的方式。DirectPlay 提供的 Lobbying 服務可簡化多玩家遊戲的起始設定並支援可靠的通訊協定,來確保重要的遊戲資料不會在網路上遺失。DirectPlay 8.0 的新功能是支援網路上的語音通訊,這可以大為提昇團隊型、多玩家遊戲的遊戲樂趣,並透過提供與其他遊戲者談話的能力,而為社交遊戲開啟新的一頁。
Microsoft DirectShow
Microsoft DirectShow API 可提供多媒體檔案 (位於您電腦及網際網路伺服器上) 的高品質擷取及播放。DirectShow 可支援各式各樣的音訊及視訊格式,包括「進階資料流格式 (ASF)」、「影像交錯技術 (AVI)」、「數位影像 (DV)」、Motion Picture Experts Group (MPEG)、 MPEG Audio Layer-3 (MP3)、Windows Media Audio/Video (WMA/WMV) 及 WAV 檔案。 DirectShow 可啟用影像擷取、DVD 播放、視訊編輯及混合、硬體加速影像解碼,以及廣播類比訊號及數位電視訊號的調整。
測試 DirectX 元件可以在已連接至您系統的每個監視器上測試 Microsoft DirectDraw 及 Direct3D。也可在每個音效輸出裝置上測試 DirectSound,並在每個音樂連接埠上測試 DirectMusic。
2007年10月8日
Display PNG file in WinCE 5.0
PNG圖檔支援背景透明的效果,不過一開始使用時,卻發現原本應該是要透明的背景,卻仍然顯示出來,這樣在將來若做UI介面時會使的美觀上大打折扣
##CONTINUE##
後來在書上發現,可以利用程式來自行處理,不過,處理時必須要指定要變為透明的顏色,也就是說,每載入一張PNG圖都必須去取得透明色的RGB值,才能將它變為透明,這樣會使得設計上非常不方便,同時,在處理後的圖示上,由於只譨指定一種顏色為透明,因此,若圖示上有陰影的效果,會使得圖示的邊緣處理的不漂亮!
後來,發現在WinCE 5.0上其實有提供透明背景顯示,不過需要加入Component後才行,可以在platform builder上搜尋SYSGEN_GDI_ALPHABLEND,加入"Alphablend API",重新Build image後即可!
至於顯示PNG的方便,有很多library可以使用,不過還需要時間比較一下,微軟也有提供IImage class可以使用。
CoInitializeEx(NULL, 0);
IImagingFactory* pImageFactory;
IImage *pImage = NULL;
HRESULT hr = CoCreateInstance(CLSID_ImagingFactory, NULL,
CLSCTX_INPROC_SERVER,
__uuidof(IImagingFactory),
(LPVOID *)&pImageFactory);
// Load image from file
pImageFactory->CreateImageFromFile(L"info.png", &pImage);
// Get image information
ImageInfo info;
pImage->GetImageInfo(&info);
RECT rc={0,0,info.Width, info.Height};
pImage->Draw(dc, &rc, NULL);
// Clean up
pImage->Release();
pImageFactory->Release();
CoUninitialize();
2007年10月1日
修正Reset Registry to default問題
藉由更動TOC中變數來判斷是否要將系統回復為預設值
AP部分:將TOC中bReserved[3]的值設為0X45
TOC *p;
BYTE InBuf[2048];
DWORD psize,val=0;
if(::KernelIoControl(IOCTL_READ_TOC, NULL,0,&InBuf, 2048,&psize))
{
p = (TOC *)InBuf;
p->bReserved[3] =0x45;
::KernelIoControl(IOCTL_WRITE_TOC, &InBuf, 2048,NULL,0,&psize);
KernelIoControl(IOCTL_HAL_REBOOT, NULL, 0, NULL, 0, NULL); //reboot device
}
##CONTINUE##
Driver部分:
- 在IsAnyKeyDown()加入判斷:若值為0x45則將系統回復為預設值
if(toc->bReserved[3] == 0x45)
{
RETAILMSG(1, (TEXT("#####toc->bReserved[3]=%d \r\n"),toc->bReserved[3]));
return TRUE;
}
.........
- 在XXXDaemon中加入判斷:若值為0x45,則將PETestFolder刪除,並將值設為0避免重複作回復預設值的動作!
if(toc->bReserved[3] == 0x45)
{
if(::KernelIoControl(IOCTL_READ_TOC, NULL,0,&InBuf, 2048,&psize))
{
p = (TOC *)InBuf;
p->bReserved[3] =0;
::KernelIoControl(IOCTL_WRITE_TOC, &InBuf, 2048,NULL,0,&psize);
}
hFind = FindFirstFile (L"\\My Flash Disk\\PETestFolder", &FindFileData);
if(hFind != INVALID_HANDLE_VALUE)
{
FindClose(hFind);
if(EmptyDirectory(_T("\\My Flash Disk\\PETestFolder"),TRUE))
{
RemoveDirectory(_T("\\My Flash Disk\\PETestFolder"));
}
}
2007年8月2日
Something about including managed code to OS Image
在MSDN上提到:
The MODULES section specifies which Windows Embedded CE-based modules are included in the run-time image, and how they are loaded into the memory table as established in the MEMORY section of the Config.bib file.
This section can contain up to 2,000 modules, which consist of a two-part combination of source code and data.
| Note: |
| Do not include managed code in the MODULES section. This is because the kernel does not load managed code. Instead, managed code is opened as a memory-mapped file by the .NET Compact Framework. Managed code must be included in the FILES section. |
##CONTINUE##
至於甚麼是Managed Code? Unmanaged Code? Native Code?可以參考這篇文章!Managed, Unmanaged, Native: What Kind of Code Is This?
因此,在platform.bib中,必須將要加入的Managed Code加在Files Section而不是在Modules Section!
2007年7月27日
增加MFC component到Wince 6.0 Image
在Visual Studio 2005中建立Wince 6.0 OS時,似乎找不到MFC的Component,在Google上搜尋了一下,看起來是要自己將需要的檔案加到OS的Image中!
1.首先,若不知道程式需要用到哪些DLL檔,可以使用 Dependency Walker 確認:
2.利用 CEFileWiz將所需的DLL檔案產生CE 的Component,MFC相關的DLL在安裝Visual Studio2005完後,會放置在C:\Program Files\Microsoft Visual Studio 8\VC\ce\Dll\
2007年7月24日
在WinCE桌面上加個程式捷徑
1.產生一個.lnk檔案
產生一個.lnk檔案,例如:MyApp.lnk,檔案內容為
20#"\Windows\MyApp.exe"
其中,20代表#後的字串個數,包含""!
並將.lnk檔放到%_PROJECTOAKROOT%\Files目錄下!
2.在.dat內加入捷徑宣告
在project.dat內加入下面宣告:
Directory("\Windows\Desktop"):-File("DebugZoneAp.lnk", "\Windows\DebugZoneAp.lnk")
3.將.lnk檔增加到ROM Image內
在project.bib之FILE區內加入:
DebugZoneAp.lnk $(_FLATRELEASEDIR)\DebugZoneAp.LNK NK S
2007年7月19日
Something about taskbar and desktop
有關Taskbar設定:
設定Taskbar自動隱藏:在platform.reg中加入
[HKEY_LOCAL_MACHINE\Software\Microsoft\Shell\AutoHide]
"Default"=dword:1
將Taskbar "Always on top"屬性取消:
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Shell\OnTop]
"Default"=dword:0
##CONTINUE##
若要將taskbar完全隱藏,可以在程式中加入:
HWND hWnd = NULL;
hWnd = ::FindWindow(_T("HHTaskBar"),NULL);
if(hWnd)
{
::ShowWindow(hWnd,SW_HIDE);
}
有關桌面設定:
設定預設桌布:在platform.reg中加入
[HKEY_CURRENT_USER\ControlPanel\Desktop]
"wallpaper"="\\Windows\\Orangebk.jpg"
記得要將圖片檔在platform.bib中加入
取消我的電腦與垃圾桶圖示:在platform.reg中加入
[HKEY_LOCAL_MACHINE\Explorer\Desktop]
"{000214A0-0000-0000-C000-000000000046}"=-
"{000214A1-0000-0000-C000-000000000046}"=-
2007年7月11日
Windows CE vs. Windows Mobile
簡單來說,基本上兩者所採用的系統核心是一樣的,不過Windows Mobile是Microsoft公司專門為了市面上常見到的PocketPC或是Smartphone所打造的一套開發環境與授權方式,一般OEM公司如果想要加入生產PocketPC或是Smartphone的行列,就必須與Microsoft特別簽訂相關授權,至於產品的外觀與內含的軟體核心,都是由Microsoft建議,量產之前也必須通過Microsoft的認證,方能掛上Microsoft標籤出售。
##CONTINUE##
至於Windows CE則不限定於PocketPC或是Smartphone的產品,一般公司可以自由運用在許多方面。以這一次Microsoft所展示的相關產品來說,就可以運用在VoIP電話或是網路IP機上盒等多樣產品,一般公司可以自由選擇Windows CE中的套件組合,如果單單選擇只要核心的套件組合,最便宜的核心授權費是3元美金,量產出貨也不一定要通過Microsoft的認證,當然也省了一筆認證所需的費用。如此的彈性組合,已經逐漸讓許多專門做嵌入式系統產品的廠商心動,並且逐漸積極佈局研發。
這兩者的軟體開發環境取得也不一樣,Windows Mobile是在取得Microsoft授權之後,由Microsoft以特別的方式授予。但是Windows CE則是以幾乎免費的方式散佈。因此對於一般公司或是個人工作室來說,取得Windows CE的開發環境與相關技術文件的門檻相對來說是非常低的。
[節錄]"WinCE降低授權門檻 微軟新版OS大舉進攻嵌入式市場"


