fivelake
驱动牛犊
驱动牛犊
  • 注册日期2005-12-16
  • 最后登录2017-04-29
  • 粉丝0
  • 关注0
  • 积分17分
  • 威望92点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
  • 社区居民
阅读:2116回复:4

64位驱动永远是从system32下面拿么?

楼主#
更多 发布于:2013-02-17 17:06
小弟正在做驱动开发,发现,在32位下,驱动程序可以放在应用程序同一个目录就可以了。OS不会去system32系统目录下面找驱动。

但是换成64位win7后,发现这个定律失效了,只要是我用64位编译过的驱动,OS理都不理我,直接取系统目录下找驱动文件。这个是不是Win7 某个安全特性在起作用?能否关闭?

谢谢
zhangfresh
驱动牛犊
驱动牛犊
  • 注册日期2008-07-21
  • 最后登录2023-01-09
  • 粉丝1
  • 关注2
  • 积分94分
  • 威望871点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
  • 社区居民
沙发#
发布于:2013-02-18 09:55
你的驱动是什么驱动?应该是nt式驱动吧。
32位下,驱动程序可以放在应用程序目录,估计是应用程序安装驱动的时候,注册了驱动服务,把sys文件指向应用程序目录的sys文件。你到HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\services下找找看是不是这样。
64位下,你的应用程序是32位的吗?估计跟这个有关。还有要确保你的驱动已经签名。到HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\services下,找到你驱动的服务,看看sys指向哪个文件。
fivelake
驱动牛犊
驱动牛犊
  • 注册日期2005-12-16
  • 最后登录2017-04-29
  • 粉丝0
  • 关注0
  • 积分17分
  • 威望92点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
  • 社区居民
板凳#
发布于:2013-02-18 10:23
回 zhangfresh 的帖子
zhangfresh:你的驱动是什么驱动?应该是nt式驱动吧。
32位下,驱动程序可以放在应用程序目录,估计是应用程序安装驱动的时候,注册了驱动服务,把sys文件指向应用程序目录的sys文件。你到HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\services下找找看是不是这样。
64位下,你的应用程序是32位的 .. (2013-02-18 09:55)

恩,我的驱动不是Kernel 驱动,是UserMode驱动。事实上,我只是想做一个Graphic UserMode驱动的wrap,所以我编译成一样的名字,放在应用程序目录下,这样应用程序会先load我,然后再由我去load真正的driver。

这种方式在32位Win7下,是没有什么问题的。非常成功。

但是在64位模式下,OS永远从system32下面去找需要的dll。我说的64bit 模式,是说我的驱动也是用64位来编译的。如果我的驱动是用32位编译,就没有问题。仅仅当我的驱动是64位模式编译的,就出问题了。OS不会从当前目录里面读取文件。我关闭了数字签名也没有用。
zhangfresh
驱动牛犊
驱动牛犊
  • 注册日期2008-07-21
  • 最后登录2023-01-09
  • 粉丝1
  • 关注2
  • 积分94分
  • 威望871点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
  • 社区居民
地板#
发布于:2013-02-19 15:47
UserMode驱动……不懂,我的回答一律作废。
correy
驱动牛犊
驱动牛犊
  • 注册日期2007-11-12
  • 最后登录2017-04-07
  • 粉丝0
  • 关注0
  • 积分76分
  • 威望531点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
  • 社区居民
地下室#
发布于:2013-03-06 20:42
重定位的问题。
游客

返回顶部