Wing
驱动牛犊
驱动牛犊
  • 注册日期2001-07-09
  • 最后登录2002-03-14
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1806回复:7

关于WHQL认证的问题

楼主#
更多 发布于:2002-01-30 13:01
我的驱动需要到微软进行WHQL认证,我已经看到了技术资料中的认证流程,我想请有经验的朋友说说驱动程序的代码要求,通过验证需要代码符合什么样的标准?
Wing ―――――――――――― 一对正在飞翔的翅膀
WindThruEars
驱动老牛
驱动老牛
  • 注册日期2002-11-17
  • 最后登录2004-07-10
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2002-01-31 11:51
1. if you get a IRP_MN_REMOVCE_DEVICE, there must be a IRP_MN_QUERY_REMOVE_DEVICE before that. otherwise you should get a IRP_MN_SURPRISE_REMOVAL.

5. Callback function is different from other functions, if you want to move them into class, they should be static.

我是假耳朵
Wing
驱动牛犊
驱动牛犊
  • 注册日期2001-07-09
  • 最后登录2002-03-14
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2002-01-31 11:07
不好意思,原来只能一次给分啊!给少了,下次一定补上!
Wing ―――――――――――― 一对正在飞翔的翅膀
Wing
驱动牛犊
驱动牛犊
  • 注册日期2001-07-09
  • 最后登录2002-03-14
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2002-01-31 10:57
呵呵,谢谢你的回答啊!我的程序是Smartcard驱动:
1。98下设备扩展中,我现在最先检测到移除设备时得到的副功能码是IRP_MN_QUERY_REMOVE_DEVICE,而不是IRP_MN_REMOVCE_DEVICE
在2000也是IRP_MN_QUERY_REMOVE_DEVICE.
2。我可以试试
3。用C++写的程序。
4。这是这种设备的标准,其实可以支持N个的
5。或许真的要全部移到类里去了,但我发现回调函数的入口总是找不到,如果把global变成static的结果会有不同吗?

这次给分了!
Wing ―――――――――――― 一对正在飞翔的翅膀
WindThruEars
驱动老牛
驱动老牛
  • 注册日期2002-11-17
  • 最后登录2004-07-10
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2002-01-31 10:23
1. It seems that you didn\'t handle IRP_MN_SURPRISE_REMOVAL properly.

2. Add both a upper and lower filter driver to your driver, watch what happened during device removal. (you can modify ddk/src/general/toaster/filter into a generic filter driver)

3. I cannot understand, if you are writing your driver by C,every function is global. Maybe you are using C++, it\'s also ok to have global functions.

4. If there is no connection between different device instance, you can support as many devices as you system can support, not just two or four.

5. Share data between different instance should be very dangerous.
我是假耳朵
Wing
驱动牛犊
驱动牛犊
  • 注册日期2001-07-09
  • 最后登录2002-03-14
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2002-01-31 09:12
呵呵,谢谢各位的回答,真是长见识啊!
我的驱动程序现在还有大小三个问题需要解决:
1。在98/ME下,正常启动后如果拔掉一个设备,98不能关机,这肯定是个错误,需要解决。
2。2000下,拔下设备,虽然没有安全移除的对话框,但在系统日志中有提示说拒绝访问,并且检测到删除设备时程序执行的过程与98不同,不知这样的问题是属于那一种类型的?
3。又些过程,如回调例程使用global的,是否需要移到一个class里来,我的程序现在根据标准可以同时支持4个相同设备。

能否将以上具体问题进行解答一下,不胜感激。
Wing ―――――――――――― 一对正在飞翔的翅膀
无心化语
禁止发言
禁止发言
  • 注册日期2001-03-23
  • 最后登录2018-06-01
  • 粉丝0
  • 关注0
  • 积分-103分
  • 威望2点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
  • 社区居民
6楼#
发布于:2002-01-31 08:14
用户被禁言,该主题自动屏蔽!
WindThruEars
驱动老牛
驱动老牛
  • 注册日期2002-11-17
  • 最后登录2004-07-10
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2002-01-31 01:24
Download the HCT toolkits from http://www.microsoft/hwdev.
Run the test to your device.(Depends on what kind of device you have, there are different requirement and tests to run) If you can pass, you can get the logo. (Of course you need to pay some money, M$ likes that)

WHQL test is always difficult to pass, especially to XP.

There is no requirement to your code, M$ won\'t read your code, they only care the test result. But be care you should not call any undocumented APIs, sometimes it can find that and fail your test.

And also, if your driver belong to a specific port/miniport driver, you can only call APIs provided by that port layer, otherwise your test will fail.

Pay more attention to ACPI part of the test, I know Chinese always ignore that.
我是假耳朵
游客

返回顶部