这里只描述一个已经编译好的DLL文件如何被加载到NK中。下面我们假设这个驱动的名字是 myDriver.dll。
1、 将myDriver.dl 拷贝到 工程文件夹下的Release目录下。
2、 修改reg文件。在platform.reg或者project .reg 中添加如下语句
[HKEY_LOCAL_MACHINE/Drivers/BuiltIn/API]
"Index"=dword:1
"Prefix"="MYD"
"Dll"="myDriver.Dll"
"Order"=dword:20
"Ioctl"=dword:4
"FriendlyName"="myDriver"
这里要说明的是Prefix 项是设备前缀名,应用程序通过这个名字来找到对应的驱动程序,
Index项是设备序号,这里index项是1。CreateFile 的第一参数必须是设备前缀名加上设备序号再加上冒号。那么在应用程序中就可以使用"MYD1:"或“MYD2”等类似的名字作为CreateFile的第一参数。这里设备序号可以随便写,应用程序都会成功调用 myDriver.dll中的Open函数。如果有需要可以在myDriver.dll中的Open函数中对不同的设备序号做相应的处理,这个处理方式可参看WinCE串口驱动代码。
例:
通过CreatFile函数调用myDriver.dll的open函数:
hCustomAPI=CreateFile (TEXT("MYD1:"), GENERIC_WRITE | GENERIC_READ,
0, NULL, OPEN_EXISTING, 0, NULL);
3、 修改bib文件。在platform.bib或者project .bib 中添加如下语句
myDriver.dll $(_FLATRELEASEDIR)/ myDriver.dll NK SH 。
系统是根据注册表中的信息找到bib文件的myDriver.dll字段,然后根据$(_FLATRELEASEDIR)/ myDriver.dll这个路径执行myDriver.dll。如果用户不小心将bib文件中的语句写成myDriver.dll $(_FLATRELEASEDIR)/ OherDriver.dll 那么最终被执行的是OherDriver.dll。
以上的三个步骤完成后就可以生成NK.Bin了,myDriver.dll会被加载到NK.bin中。
关于bib文件和reg文件的说明:
在make image阶段 会将各种bib文件合并成一个ce .bib ,这个bib文件描述了将要被链接到操作系统镜像文件中的Windows CE文件,比如上面提到的myDriver.dll。
make image 阶段 各种reg文件会被合并成一个Reginit.ini文件, 这个ini文件提供了操作系统镜像文件的注册表入口点。