windows mobile SD卡驱动问题

helyboy_1999   2009-8-11 18:05 楼主
现在我需要对SD的读写进行一些控制,做法是新建了一个流驱动,导出函数和sdmemory的一模一样,然后再注册表中将sd卡的clientdriver dll改成了我的这个驱动,在这个驱动中我再获取sdmemory的导出函数地址,在我驱动接收到函数调用的时候,根据情况将调用转给sdmemory。现在遇到了一个问题。
如果不改注册表的话那么系统一切正常,但是一旦我将注册表改成我的驱动后,系统在休眠后就无法唤醒了。
各位老大帮忙分析下原因

回复评论 (7)

真伤心,没有人回,自己顶下。
点赞  2009-8-11 21:07
各位老大帮帮忙啊
点赞  2009-8-12 08:44
就你提供的这点信息,要是能分析出问题所在,那一定是神。
点赞  2009-8-12 09:22
额。谢谢您的提醒,我再完善下。
首先在DllMain中的
  1. switch (ul_reason_for_call)
  2.         {
  3.                 case DLL_PROCESS_ATTACH:
  4.                         g_hSdMemory = LoadLibrary(TEXT("SDMemory.dll"));
  5.                         if(NULL == g_hSdMemory)
  6.                         {
  7.                                
  8.                                 return FALSE;
  9.                         }
  10.                        
  11.                         pfDSK_Open = (_DSK_Open)GetProcAddress(g_hSdMemory, TEXT("DSK_Open"));
  12. ......
  13. }\\获取所有的导出函数指针

而所有的导出函数都是这样的
  1. extern "C" DWORD WINAPI DSK_Open(
  2. DWORD hDeviceContext,
  3. DWORD AccessCode,
  4. DWORD ShareMode
  5. )
  6. {
  7.         if(pfDSK_Open)
  8.                 return pfDSK_Open(hDeviceContext, AccessCode, ShareMode);
  9.         else
  10.         {
  11.                 pfDSK_Open = (_DSK_Open)GetProcAddress(g_hSdMemory, TEXT("DSK_Open"));
  12.                 if(pfDSK_Open)
  13.                         return pfDSK_Open(hDeviceContext, AccessCode, ShareMode);
  14.                 else
  15.                         return FALSE;
  16.         }
  17. }

可是我这样之后去使系统无法唤醒了
点赞  2009-8-12 10:06
c
点赞  2009-8-12 10:56
“无法唤醒”硬件的说法是:CPU不响应唤醒源,无法恢复正常工作状态。软件的说法是:CPU响应了中断源,但是在恢复现场、重新加载驱动的过程中出问题,并且被挂死。

你的描述无法判断到底是哪里出了问题。如果仅仅是靠“屏不亮”的表现来说的,那更是无从判断了。
点赞  2009-8-12 10:58
为了调试,我在这写代码中加了写日志的代码,现在怀疑是在系统休眠的时候文件系统已经无法使用了,而我要对写文件,可能是这个地方出问题了。
下午把写日志的代码去了,再看看还会不会出这种问题
点赞  2009-8-12 11:41
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复