突然心血来潮,停下了捣鼓一时的linux,踏上window ce的学习历程。一向讨厌win32编程,人生无奈.........
翻出抽屉里发黄的YC-2440开发板。首先装了个VS2005,PB5.0.......将开发板按照开发板商的DOC,跑起来了。听老鸟们讲,实践出真知。估计,俺还得从驱动入手,毕竟跟硬件接口较为紧密写,上手快些。
驱动的编写,这里面似乎牵涉到了多线程的编程,这个可是一向若怕的地方。
windows CE中的线程并不是最小的调度单位,当其被创建之后,windows的虚拟内存机制会把它占有的内存与其他的进程隔离开来,各自的进程就在各自的区域运行啦。它也桌面环境的差别在于:
1.不支持环境变量(Environment Variable)
2.米有当前目录(Current Directory)的概念
3.不支持安全
4.不支持句柄继承
后面似乎是比较关键的东东.......
1.创建进程(桌面系统与CE的不同)
BOOL CreateProcess
(
LPCWSTR pszImageName, // 可执行程序的路径及文件名 (系统默认.exe)
LPCWSTR pszCmdLine, // 传递给这个可执行程序的命令行参数
LPSECURITY_ATTRIBUTES psaProcess, // 安全性权限描述符 (NULL)
LPSECURITY_ATTRIBUTES psaThread, // (NULL)
BOOL fInheritHandles, // 句柄继承 (FALSE)
DWORD fdwCreate, // 规定如何创建新进程
LPVOID pvEnvironment, // 指定进程所要用到的环境字符串的内存块(NULL)
LPWSTR pszCurDir, // 设定新进程的当前目录 (NULL)
LPSTARTUPINFOW psiStartInfo, // 指定新进程的STARTINFO结构体(NULL)
LPPROCESS_INFORMATION pProcInfo // 指定新进程的PROCESS_INFORMATION结构
);
CreateProcess被创建时,系统将创建一个进程内核对象,内核对象计数器+1.然后系统将会为其分配一个虚拟地址空间,将该进程需要的EXE和DLL加载到这个地址空间.最后为这个进程创建一个主线程,如果成功,返回TRUE。
主要的进程:
NK.exe //系统服务
Filesys.exe/Filesys.dll //对象存储
GWES.exe/GEWS.dll // 图形.窗口.事件服务
device.exe // 设备管理
explorer.exe // shell
services.exe // 服务管理
repllog.exe // 系统与外部设备连接
rapisrv.exe // 系统与windows连接
阅读(891) | 评论(0) | 转发(0) |