wince6.0 流驱动无法加载,getLastError = 55,怎么办?

huangxiaohui   2009-3-11 17:25 楼主
问题如下:
   我是接手别人的活,流驱动开发人员已走,据他说驱动是可以用的,流驱动是在wince4.2下编译成的dll。
我现在用wince6.0 、C#开发。修改bib、reg文件,编译内核,用veiwbin查看,我需要的dll已包含在nk.bin内。
但我测试时返回的getlasterror = 55 (指定网络资源或设备不再可用),
我现在不知道该怎么做了。
请教大侠们,我下步该怎么去排队错误??如果我不想修改他用evc写的驱动代码(不愿再去管驱动了)。
我如何判定是什么地方出错?
时间紧,急判回复!!

回复评论 (19)

用FormatMessage 看看是什么错,GetLastError只有错误号
点赞  2009-3-11 17:33
有没正确加载起来?
点赞  2009-3-12 21:45
createFile  实际上就是就是调用你的流式驱动的XXX_Open函数
检查这个函数有什么问题,并且在xxx_init中加一些调试信息。
点赞  2009-3-13 16:27
怀疑就没被加载起来
点赞  2009-3-13 18:02
to:xqhrs232
   我怎么知道是否加载?

    我的做法:
    把原开发员给我的2752dll.dll放在files目录下,
    修改project.bib如下:
     2752dll.dll   $(_FLATRELEASEDIR)\2752dll.dll      NK SH
   修改project.reg如下:
     [HKEY_LOCAL_MACHINE\Drivers\BuiltIn\Mdodll]
      "Index"=dword:1
      "Prefix"="MDO"
      "Dll"="2752dll.dll"
      "Order"=dword:0
   然后编译内核!
   成功后,nk.bin里确实有2752dll.dll
  但createfile不能成功!
   我现在如何知道是否正确加载??请指教。


to:jinlking
    你的建议很好,但我对驱动不熟悉,怕越改越麻烦。当然,如果没有其它更好的办法,我只能硬着头皮去改了。

    希望高手们指教!
点赞  2009-3-14 09:09
估计是没加载成功,成功的话createfile是不会出错的,你看看Init里面打印些消息..这样可以确定跑到哪
点赞  2009-3-14 10:03
还是要把相应的DLL放到CE6下面来编译一下,然后在关键的位置加些Debug Message,看问题到底出在哪里
不然瞎猜也猜不到在哪里出错
点赞  2009-3-12 22:46
提示: 作者被禁止或删除 内容自动屏蔽
点赞  2009-3-13 09:51
to:yashi
    我所作的操作只是createfile ,具体出下:

project.reg:
[HKEY_LOCAL_MACHINE\Drivers\BuiltIn\Mdodll]
"Index"=dword:1
"Prefix"="MDO"
"Dll"="2752dll.dll"
"Order"=dword:0

打开函数:
HANDLE haiXXX = CreateFile(L"MDO1:", GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0, 0)

发现打不开,用GetLastError得到55.
现在不知道该怎么做了。也不知道如何排错。
求教!
     
点赞  2009-3-13 10:40
在tool 菜单下有个remote process viewer,脸上同步软件,进去,然后点击,如果是流驱动点击device.exe,如果有相应的DLL出现就可以断定加载了,否则没有。
点赞  2009-3-14 09:13
study
点赞  2009-3-14 09:33
to:gooogleman
   我用的是vs2005,在tool下没有找到你说的remote process viewer
   但我在target --> remote tools ---> process viewer
   但是连不上呢?
点赞  2009-3-14 09:43
还没法发图片,按了一下回车,发上去了!
提示如下:
  The KITL Bootstrap Server reported the following error:Unable to establish a connection with the device.Please check server configuration settings.

我没有用Ethernet直接下载内核,我是把nk.bin直接copy到CF卡上启动的,但我的网络是通的。
我通常都是用server-U从电脑上下载程序到板上。
当然,还有一点要说明的,我编译时没有选中:Enable KITL(no IMGNOKITL=1)
是事跟这个有关??
请指教!
点赞  2009-3-14 09:50
to:xqhrs232
   我怎么知道是否已正确加载?用什么方法?谢谢!
to:hzdysymbol
   ce4.2下编的dll不太可能放到ce6.0下就不能用吧!
   说实在的,我不想动他原来的驱动代码,因我对这个不熟悉。怕越改越麻烦!

   GetLastError = 55,即指定网络资源或设备不再可用 这具体说是什么意思呢?
   我开始以为是板子(2752)没有插紧,但我同是又加了其它几块板子(2728,2718),都是55,应该不是接触不良的原因。

   高手指教!困扰很长时间了。
   感谢先!
点赞  2009-3-13 09:11
不懂,up
点赞  2009-3-13 09:14
不懂,up
点赞  2009-3-13 09:14
解决了,是测试程序的问题!
感谢大家的讨论,增长见习不少!

遗憾的是,我到现在还是没分,过两天有分了给大家赏钱结贴!
点赞  2009-3-24 10:39
我也遇到同样的问题,但是我用LoadLibrary()来打开dll却能成功,这又是为啥呢?
点赞  2009-7-30 11:11
我也出来同样的问题,驱动装载成功,但是打开(CreateFile)的时候出现错误,用GetLastError()得到的错误号为55(指定网络资源或设备不再可用).

我的测试程序和你贴出来的差不多,请问哪里有问题?

打开函数:
HANDLE hSin=CreateFile(TEXT("SIN1:"), GENERIC_WRITE | GENERIC_READ, 0, NULL, OPEN_EXISTING, 0, NULL);
点赞  2010-6-30 11:28
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复