3869|11

71

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

请教:wince流接口驱动DllEntry不停被调用,不断加载卸载线程 [复制链接]

各位大侠,本人目前intel270的硬件,跑wince5.0,目前在写流接口驱动的时候发现线程不断的被加载和卸载,即使使用一个与硬件无关的最简单的流接口驱动,情况也是如此。
OOL WINAPI DllEntry(HANDLE hInstDll, DWORD dwReason, LPVOID lpvReserved)
{
    switch ( dwReason )
        {
                case DLL_PROCESS_ATTACH:
                        RETAILMSG(1, (TEXT("SPL: DLL_PROCESS_ATTACH.\r\n")));        /* 提示动态库加载 */
                        //DisableThreadLibraryCalls((HMODULE) hInstDll);                       
                        break;

                case DLL_PROCESS_DETACH:
                        RETAILMSG(1, (TEXT("SPL: DLL_PROCESS_DETACH.\r\n")));        /* 提示动态库卸载 */
                        break;
                case DLL_THREAD_ATTACH:
                         RETAILMSG(1,(TEXT("DLL_THREAD_ATTACH\n")));
                         break;
                    case DLL_THREAD_DETACH:
                         RETAILMSG(1,(TEXT("DLL_THREAD_DETACH\n")));
                         break;
    }
   
    return (TRUE);
}

线程被加载后,就会一直如此
DLL_THREAD_ATTACH
DLL_THREAD_DETACH
DLL_THREAD_ATTACH
DLL_THREAD_DETACH
DLL_THREAD_ATTACH
DLL_THREAD_DETACH
DLL_THREAD_ATTACH
DLL_THREAD_DETACH

DLL_THREAD_ATTACH
DLL_THREAD_DETACH

写的驱动无法正常读写,是否是该处异常造成的,是什么原因造成的呢,该如何解决?



此帖出自WindowsCE论坛

最新回复

谢谢各位的帮忙,应该明了了,结贴了  详情 回复 发表于 2009-6-6 15:25
点赞 关注
 

回复
举报

67

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
如果将你的DllEntry改成如下这样,看能不能跑的起来?我们一般都是这么做的,不用DLL_THREAD_ATTACH和DLL_THREAD_DETACH的通知消息的。

BOOL WINAPI DllEntry(HANDLE hInstDll, DWORD dwReason, LPVOID lpvReserved)
{
    switch ( dwReason )
    {
       case DLL_PROCESS_ATTACH:
           RETAILMSG(1, (TEXT("SPL: DLL_PROCESS_ATTACH.\r\n"))); /* 提示动态库加载 */
           DisableThreadLibraryCalls((HMODULE) hInstDll);
       break;

       case DLL_PROCESS_DETACH:
           RETAILMSG(1, (TEXT("SPL: DLL_PROCESS_DETACH.\r\n"))); /* 提示动态库卸载 */
       break;
    }
    return (TRUE);
}
此帖出自WindowsCE论坛
 
 
 

回复

52

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
很有可能哪个线程进入死循环了
此帖出自WindowsCE论坛
 
 
 

回复

75

帖子

0

TA的资源

一粒金砂(初级)

4
 
谢谢楼上,DisableThreadLibraryCalls应该只是禁止了通知,应该不能根本上解决线程加载和卸载的问题吧。线程加载卸载还是不断发生,只是没有通知而已吧。
此帖出自WindowsCE论坛
 
 
 

回复

76

帖子

0

TA的资源

一粒金砂(初级)

5
 
按楼主的方式改写我自己驱动上的DLLEntry,在群感动加载的过程中也是频繁打印DLL_THREAD_ATTACH和DLL_THREAD_DETACH这两个通知的,但是我的驱动执行的没问题啊,系统也完全可以跑得起来。我对系统执行的机制还是不太清楚,帮不上你的大忙,真是惭愧啊
此帖出自WindowsCE论坛
 
 
 

回复

66

帖子

0

TA的资源

一粒金砂(初级)

6
 
引用 5 楼 xingjling 的回复:
按楼主的方式改写我自己驱动上的DLLEntry,在群感动加载的过程中也是频繁打印DLL_THREAD_ATTACH和DLL_THREAD_DETACH这两个通知的,但是我的驱动执行的没问题啊,系统也完全可以跑得起来。我对系统执行的机制还是不太清楚,帮不上你的大忙,真是惭愧啊

SORRY 将驱动打错成群感动了   呵呵
会不会是系统在进入Idle时就提示DLL_THREAD_DETACH,然后在退出Idle时就会提示DLL_THREAD_ATTACH呢?如果是这样的话,那么频繁出现ATTACH和DETACH就不奇怪了,胡乱猜测一下,LZ不要见怪啊
此帖出自WindowsCE论坛
 
 
 

回复

63

帖子

0

TA的资源

一粒金砂(初级)

7
 
LZ用什么方式来加载DLL的?
此帖出自WindowsCE论坛
 
 
 

回复

59

帖子

0

TA的资源

一粒金砂(初级)

8
 
LZ检查一下注册表中驱动加载的参数设置

Flags的参数怎么设置的
此帖出自WindowsCE论坛
 
 
 

回复

69

帖子

0

TA的资源

一粒金砂(初级)

9
 
多谢xingjling兄弟热心帮助,虽然为什么出现这个问题还是不太清楚,起码证明驱动应该是完全可以跑起来的,驱动的问题应该不是出在这里。

注册表的信息如下,CAN的驱动
;[HKEY_LOCAL_MACHINE\Drivers\BuiltIn\CAN]
   "Prefix" = "CAN"
   "Dll" = "can.dll"
   "FriendlyName" = "CAN"
   "Index" = dword:1
   "Order" = dword:0
; -----------------------------------------------------------------------------
此帖出自WindowsCE论坛
 
 
 

回复

78

帖子

0

TA的资源

一粒金砂(初级)

10
 
这个和驱动完全无关
DLL_THREAD_ATTACH是进程中有线程加载卸载都会有通知的
此帖出自WindowsCE论坛
 
 
 

回复

70

帖子

0

TA的资源

一粒金砂(初级)

11
 
引用 10 楼 clementzhao 的回复:
这个和驱动完全无关
DLL_THREAD_ATTACH是进程中有线程加载卸载都会有通知的

完全同意这个见解!
此帖出自WindowsCE论坛
 
 
 

回复

90

帖子

0

TA的资源

一粒金砂(初级)

12
 
谢谢各位的帮忙,应该明了了,结贴了
此帖出自WindowsCE论坛
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

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

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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

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

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

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