2008年6月27日 星期五
MAC WINCE File Share
search keyword
smbserver
wince smbserver
file server
ValidationErrorString
後來發現 可能與認證方式有關
LM, NTLM, NTLM v2
http://support.microsoft.com/kb/823659
http://msdn.microsoft.com/en-us/library/aa921092.aspx
是重要的 registry setting
Authentication 在MAC & Vista中失敗
所以試著用Kerberos 並且更新WINCE最新的Update
但是這裡又出現了一個bug
http://blogs.msdn.com/cenet/archive/2008/05/16/kerberos-cannot-resolve-netapi32-dll-in-ce5-0-after-qfe-updates.aspx
也就是在更新最近的update之後 (2008年 4? 5?月)
在build 的時候會出現以下訊息
"Warning: Unable to do imports from kerberos.dll to NETAPI32.dll - will late bind"
在run的時候則是看起來像
DoImport Failed! Unable to import Library 'NETAPI32.dll' for 'kerberos.dll'
簡單來說 更新的Kerberos depend on NETAPI32
所以要 SYSGEN_NETAPI32=1
在Catalog 中 也就是 Network features下的 "Domain Discovery"
把這個加進來就行了
2008年6月24日 星期二
WINCE Kiosk
最近又修改了一些地方 順便也Review了一遍
Summary
1. HKEY_LOCAL_MACHINE\Init
"Launch30"="gwes.exe"
"Depend30"=hex:14,00
LaunchXX XX 是啟動順序
DependXX = hex:14,00 表示 要等 Launch20 和 Launch00 "結束"之後才會Launch
2. 怎知道LaunchXX 結束了呢? (程式怎麼通知系統說 I'm ready?)
就是在程式裏呼叫 SignalStarted(xx)
一般的寫法是 SignalStarted(_wtol(lpCmdLine));
由這邊可以看到,由 WinMain傳進來的第三個參數 LPWSTR lpCmdLine 就是LaunchXX的 XX
3. ShellExecuteEx
ShellExecuteEx 用來載入程式
假如找不到該路徑下的程式 會顯示一個dialogbox 按ok 會回傳0 (Error)
假如找到該程式並執行 會一直往下run(Non-block)
4. 今天如果要等程式執行完才做下個動作(如回到桌面...)
要用 WaitForSingleObject( sei.hProcess, INFINTE );
並且在呼叫 ShellExecuteEx之前 sei.fMask 要設定 SEE_MASK_NOCLOSEPROCESS
不然 sei.hProcess 會是NULL
WaitForSingleObject( hProcess, xx );
hProcess是NULL時 會signaled
5. ProcessStartupFolder()
這個是Explorer (WINCE 的Shell) 處理 startup folder 的 routine
Source Code 在 \WINCE500\PUBLIC\SHELL\OAK\HPC\EXPLORER\MAIN\EXPLORER.CPP 裏,很有參考的價值
其中一段
// Process the items in the start up folder
if (!GetAsyncKeyState(VK_SHIFT))
{
DoStartupTasks();
}
else
{
DEBUGMSG(ZONE_WARNING, (TEXT("Bypassing startup files.\r\n")));
DWORD dw = 0;
if (ERROR_SUCCESS != RegQueryValueEx(HKEY_LOCAL_MACHINE,
TEXT("CalibrationData"),
(LPDWORD) TEXT("HARDWARE\\DEVICEMAP\\TOUCH"),
NULL, NULL, &dw))
{
TouchCalibrate();
}
}
可以看出 在啟動的時候 按住shift鍵 就不會去處理 start up folder裡面的東西
上面 也可以看到 Touch Panel 的 Calibration 流程 如果bapass startup file 之後
會去讀 HKLM\HARDWARE\\DEVICEMAP\\TOUCH
然後做 Calibration 的動作
Lyg.p: Layout Manager successfully initialized to 1
這個message 在 public\common\oak\drivers\keybd\LayMgr\LayMgr.cpp 裏
Lyg.p 應該 是 LayMgr.cpp (但是因為 unicode output , bug )
Explorer(V2.0) taskbar thread started.
在 public\shell\oak\hpc\explorer\taskbar\taskbar.cpp 裏
Fuck, 假如在 build image 的時候沒有用 DCOM (用COM不行)
在 explorer.exe 會停住
2008年6月16日 星期一
LIBTIFF
build libtiff link 時會出錯,應該是連結方式不同(libtiff, libjpeg, zlib)
動態和靜態
然後build libtiff
雖然可以link, 但是會出現 warning LNK4098
LINK : warning LNK4098: defaultlib 'LIBCMTD' conflicts with use of other libs; use /NODEFAULTLIB:library
這個必須解決
應該是使用的版本不對 (如一個是multithread, 一個是single thread, debug和非debug)
查了一下 發現 libtiff和zlib 都是用 /md (multithreaded dll, use msvcrt.lib)選項編譯的 而libjpeg 預設是用 /MTd
所以會有問題
要修改 jpeg-6b\makefile.vc
CFLAGS= $(cflags) $(cdebug) $(cvars) -I.
改成
CFLAGS= $(cflags) $(cdebug) $(cvarsdll) -I.
然後make的時候 要下
nmake nodebug=1 /f makefile.vc
就會以/MD選項編譯
還有tiff-3.8.2\nmake.opt 中 OPTFLAGS /GX 選項改成/EHsc 免得一堆
depreciated warning 跑出來
完美的Compile!!
!! 新增 Build Libtiff under WINCE (for MIPS)
以上所Build 出來的是Windows 的版本
忘了講到重點 如何build WinCE 的版本
1. 使用Embedded Visual C++ 4.0
打開 Command Prompt window
進入 \Program Files\Microsoft eMbedded C++ 4.0\EVC\wce500\bin
set SDKROOT=C:\Program Files\Windows CE Tools ( Standard SDK for WINCE 安裝的地方)
run WCEMIPSII.BAT
設定好環境, 再來修改nmake.opt 這個檔案
設定 CC=clmips, Linker 的選項加 /SUBSYSTEM:WINDOWSCE
Compiler option 加入 /D _MIPS_ /D UNICODE
就可以編譯 libtiff了, happy compiling!
2. 使用Visual Studio 2008
2008年6月15日 星期日
DMO, ATL & DisableThreadLibraryCalls
BEGIN_OBJECT_MAP(ObjectMap)
/////////////////////////////////////////////////////////////////////////////
return TRUE;
DMO, DMO 也是COM
DirectX Media Objects (DMOs) are COM-based multimedia and data-streaming components.
DMO 的 sample implementation
在 WINCE500\PUBLIC\DIRECTX\SDK\INC\dmobase.h
ATL_NO_VTABLE,
ATL_NO_VTABLE 巨集會展開為__declspec(novtable).
在基類中初始化虛函數表是沒有用的,因為它會被派生類覆蓋掉,所以我們可以對它使用ATL_NO_VTABLE, 免得它產生虛函數表
當您建置專案時,連結器 (Linker) 會排除 vtable 指向的 vtable 和所有函式。
您必須只在不是直接可建的基底函式上使用 ATL_NO_VTABLE 並接著使用 declspec(novtable)。您無法在專案中衍生程度最高的類別上使用 declspec(novtable),因為這個類別 (通常是 CComObject、CComAggObject 或 CComPolyObject) 會為專案初始化 vtable 指標。
您無法從任何使用 declspec(novtable) 物件之建構函式呼叫 Virtual 函式。您必須將這些呼叫移至 FinalConstruct 方法。
WINCE DVR
2008年6月12日 星期四
2008年6月11日 星期三
2008年6月10日 星期二
USB Camera Driver
This device driver adds support for USB cameras to Windows Embedded CE 6.0. It enables still and video capture from cameras which comply with USB Video Class version 1.1.
This driver implements the camera driver interface introduced in Windows Mobile 5.0, and now available in CE 6.0. In other words, the driver is meant to be used as the source filter in a DirectShow capture graph, rather than as a stand-alone stream-based driver.
The driver supports both USB 1.x and 2.0 (high-speed) cameras. The driver will expose both uncompressed and MJPEG modes, if supported by the camera. MJPEG mode generally requires pairing the driver with a DirectShow transform filter (jpeg2rgb.dll) which is also included in this download. For more information see the included release notes.In the future, additional information and sample code may be posted to the Windows CE Base Team blog.
Important Download Details:
• Setup will install the source code files under %_WINCEROOT%\public\ThirdParty\Catalog\USBCam.
• Setup will not replace or modify files in your Windows Embedded CE Platform Builder installation.
http://msdn.microsoft.com/en-us/library/aa924811.aspx
http://msdn.microsoft.com/en-us/library/ms803117.aspx
http://support.microsoft.com/kb/828756/en-us
H.264&MP4
http://tech.digitimes.com.tw/ShowNews.aspx?zCatId=C13&zNotesDocId=EF9FC195DA1E88C24825714100421F6D
2008年6月9日 星期一
.MXF
2008年6月4日 星期三
IOCTL_SCSI_PASSTHROUGH
Features
IMAPI supports the following formats. For more details, see Disc Formats.
ISO9660 image format (includes Redbook Audio).
Joliet format.
Universal Disk Format (UDF).
2008年6月2日 星期一
EABI
還有