5616|15

78

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

关于windows mobile驱动 [复制链接]

我是做windows mobile应用开发的,对驱动程序不是很了解。想问问关于驱动的问题。
在网上看了下关于流驱动的介绍,想写一个驱动在ppc手机开机的时候自动被加载。
我按照介绍用vs2008,WM5.0 SDK写了一个dll,实现了下面几个函数:
DWORD TTT_Init( LPCTSTR pContext, LPCVOID lpvBusContext )
BOOL TTT_Close( DWORD hOpenContext )
BOOL TTT_Deinit( DWORD hDeviceContext )
BOOL TTT_IOControl( DWORD hOpenContext, DWORD dwCode, PBYTE pBufIn, DWORD dwLenIn,
                                   PBYTE pBufOut, DWORD dwLenOut, PDWORD pdwActualOut )
DWORD TTT_Open( DWORD hDeviceContext, DWORD AccessCode, DWORD ShareMode )
void TTT_PowerDown( DWORD hDeviceContext )
void TTT_PowerUp( DWORD hDeviceContext )
DWORD TTT_Read( DWORD hOpenContext, LPVOID pBuffer, DWORD Count )
DWORD TTT_Seek( DWORD hOpenContext, long Amount, WORD Type )
DWORD TTT_Write( DWORD hOpenContext, LPCVOID pBuffer, DWORD Count )
在TTT_Init函数里面我写了一个createfile,如果dll被加载那么应该会创建一个文件。
我对注册表做了如下修改:
在HKEY_LOCAL_MACHINE\Drivers\BuiltIn下面新建了一个项“TTT”
"Prefix"="TTT"
"Dll"="test.dll"
"Order"=dword:2
"Ioctl"=dword:4
现在的问题是我的dll在系统启动时没有被调用,不知道是不是我哪里没做对?或者在真机上根本不能实现?我的测试机为WM6.0 professional。
请知道的朋友说一下,谢谢!

最新回复

我加了最新的证书(至2015年到期)并在设备上加入了新根证书,还是无法启动加载流驱动,手动加载是成功的,就是无法启动加载,真晕了  详情 回复 发表于 2010-5-14 10:56
点赞 关注

回复
举报

79

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
我在线等啊!
 
 

回复

90

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
我还在等
 
 
 

回复

74

帖子

0

TA的资源

一粒金砂(初级)

4
 
没有做过WM,WinCE下驱动还要有个DllEntry函数。驱动被加载的过程中首先调用的就是这个DllEntry函数。
 
 
 

回复

76

帖子

0

TA的资源

一粒金砂(初级)

5
 
你DEF文件定义得对吗?CPP.文件中这些函数的定义
STRINGDRIVERDLL_API DWORD STR_Init(DWORD dwContext);
STRINGDRIVERDLL_API BOOL STR_Deinit(DWORD hDeviceConext);
STRINGDRIVERDLL_API DWORD STR_Open(DWORD hDeviceContext,DWORD AccessCode,DWORD ShareMode);
STRINGDRIVERDLL_API BOOL STR_Close(DWORD hOpenContext);
STRINGDRIVERDLL_API BOOL STR_IOControl(DWORD hOpenContext,DWORD swCode,PBYTE pBufIn,DWORD dwLenIn,PBYTE pBufOut,DWORD dwLenOut,PDWORD pdwActualOut);
STRINGDRIVERDLL_API void STR_PowerDown(DWORD hDeviceContext);
STRINGDRIVERDLL_API void STR_PowerUp(DWORD hDeviceContext);
STRINGDRIVERDLL_API DWORD STR_Read(DWORD hOpenContext,LPVOID pBuffer,DWORD Count);
STRINGDRIVERDLL_API DWORD STR_Seek(DWORD hOpenContext,long Amount,DWORD Type);
STRINGDRIVERDLL_API DWORD STR_Write(DWORD hOpenContext,LPVOID pSourceBytes,DWORD NumberOfBytes);
DEF文件中
EXPORTS         STR_Init
                STR_Deinit
                STR_Open
                STR_Close
                STR_Read
                STR_Write
                STR_Seek
                STR_IOControl
                STR_PowerDown
                STR_PowerUp
 
 
 

回复

68

帖子

0

TA的资源

一粒金砂(初级)

6
 
STRINGDRIVERDLL_API 这个是什么啊?STR_Init的参数怎么跟msdn里面介绍的不一样呢?
注册表里面"Order"=dword:2 这个值填2是我随便填的,我改成其它值结果还是一样。
另外如果驱动被加载TTT_Init这个函数是不是必然会被调呢?
 
 
 

回复

81

帖子

0

TA的资源

一粒金砂(初级)

7
 
Mobile下的驱动dll是需要签名的,OEM会有一个自己独有的证书来给该dll签名(在makeimg时 ),所以就放弃在一个正常的mobile系统上挂自己的驱动的想法吧;
那是不是就不可以用自己的驱动呢?
当然不是,如果使用一个已经解过锁的mobile系统下,就是可以不用签名,所以我们的dll和系统dll就是一视同仁了。这样就可以顺利达到目的。

所以请先解锁你的手机(运行第三方程序不会提示是否同意)。当然,微软的诸多为了你手机安全考虑用心良苦的设计就这样被抛弃了。
 
 
 

回复

68

帖子

0

TA的资源

一粒金砂(初级)

8
 
谢谢楼上!那么如果我的dll经过微软的M2M签名以后,我的驱动是否会被加载呢?
 
 
 

回复

95

帖子

0

TA的资源

一粒金砂(初级)

9
 
引用 7 楼 ziamhitler 的回复:
谢谢楼上!那么如果我的dll经过微软的M2M签名以后,我的驱动是否会被加载呢?

抱歉,还是不行。M2M是给应用程序用的。按照我的理解,驱动dll需要OEM自己的一个证书,比如HP有HP的证书,HTC有HTC的证书,无法混用。
 
 
 

回复

63

帖子

0

TA的资源

禁止发言

10
 
非常感谢!那么如果驱动被加载TTT_Init这个函数是不是必然会被调呢?
现在我已经通过修改注册表将我的手机解锁
参考:
http://msdn.microsoft.com/en-us/library/ms889564.aspx
http://msdn.microsoft.com/en-us/library/bb416355.aspx
我的dll还是没有被调呢?
 
 
 

回复

74

帖子

0

TA的资源

一粒金砂(初级)

11
 
引用 9 楼 ziamhitler 的回复:
非常感谢!那么如果驱动被加载TTT_Init这个函数是不是必然会被调呢?
现在我已经通过修改注册表将我的手机解锁
参考:
http://msdn.microsoft.com/en-us/library/ms889564.aspx
http://msdn.microsoft.com/en-us/library/bb416355.aspx
我的dll还是没有被调呢?

你确定你能该此处的注册表?mobile系统是不允许通过第三方应用程序更改受保护的注册表的。
楼主还是先弄一个模拟器写驱动吧
 
 
 

回复

72

帖子

0

TA的资源

一粒金砂(初级)

12
 
我的手机是WM6.0 professional(PPC Phone)版本的,如果是standard(smartphone)版本的就改不了
 
 
 

回复

70

帖子

0

TA的资源

一粒金砂(初级)

13
 
我不太清楚具体如何让一个security的手机去加载一个非信任的dll。这个研究起来也挺麻烦,如果楼主就是想写一个驱动的玩玩的话,这样的研究方向不知道是不是偏差一点。
因为Windows Mobile在硬件上是一个封闭的系统,所以基本上deivce的驱动OEM都能cover,除非类似SDIO wifi设备这样扩展性的驱动可能会有第三方安装获得,其他驱动都是写好的。所以在这样一个硬件(驱动)封闭的环境中非要增加一个自己的驱动,我觉得没有必要非要这样玩啦。
 
 
 

回复

86

帖子

0

TA的资源

一粒金砂(初级)

14
 
问题解决!呵呵!用WM SDK提供的证书将dll签名后就可以被加载了
 
 
 

回复

71

帖子

0

TA的资源

一粒金砂(初级)

15
 
哦,对,楼主正解,windows mobile SDK里有一些测试证书,安装这些测试证书之后,就能加载一些通过这些证书sign的dll了。研究的不错。
 
 
 

回复

67

帖子

0

TA的资源

一粒金砂(初级)

16
 
我加了最新的证书(至2015年到期)并在设备上加入了新根证书,还是无法启动加载流驱动,手动加载是成功的,就是无法启动加载,真晕了
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表