wince6.0 流驱动无法加载,getLastError = 55,怎么办?
问题如下:
我是接手别人的活,流驱动开发人员已走,据他说驱动是可以用的,流驱动是在wince4.2下编译成的dll。
我现在用wince6.0 、C#开发。修改bib、reg文件,编译内核,用veiwbin查看,我需要的dll已包含在nk.bin内。
但我测试时返回的getlasterror = 55 (指定网络资源或设备不再可用),
我现在不知道该怎么做了。
请教大侠们,我下步该怎么去排队错误??如果我不想修改他用evc写的驱动代码(不愿再去管驱动了)。
我如何判定是什么地方出错?
时间紧,急判回复!!
用FormatMessage 看看是什么错,GetLastError只有错误号
createFile 实际上就是就是调用你的流式驱动的XXX_Open函数
检查这个函数有什么问题,并且在xxx_init中加一些调试信息。
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
你的建议很好,但我对驱动不熟悉,怕越改越麻烦。当然,如果没有其它更好的办法,我只能硬着头皮去改了。
希望高手们指教!
估计是没加载成功,成功的话createfile是不会出错的,你看看Init里面打印些消息..这样可以确定跑到哪
还是要把相应的DLL放到CE6下面来编译一下,然后在关键的位置加些Debug Message,看问题到底出在哪里
不然瞎猜也猜不到在哪里出错
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.
现在不知道该怎么做了。也不知道如何排错。
求教!
在tool 菜单下有个remote process viewer,脸上同步软件,进去,然后点击,如果是流驱动点击device.exe,如果有相应的DLL出现就可以断定加载了,否则没有。
to:gooogleman
我用的是vs2005,在tool下没有找到你说的remote process viewer
但我在target --> remote tools ---> process viewer
但是连不上呢?
还没法发图片,按了一下回车,发上去了!
提示如下:
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)
是事跟这个有关??
请指教!
to:xqhrs232
我怎么知道是否已正确加载?用什么方法?谢谢!
to:hzdysymbol
ce4.2下编的dll不太可能放到ce6.0下就不能用吧!
说实在的,我不想动他原来的驱动代码,因我对这个不熟悉。怕越改越麻烦!
GetLastError = 55,即指定网络资源或设备不再可用 这具体说是什么意思呢?
我开始以为是板子(2752)没有插紧,但我同是又加了其它几块板子(2728,2718),都是55,应该不是接触不良的原因。
高手指教!困扰很长时间了。
感谢先!
解决了,是测试程序的问题!
感谢大家的讨论,增长见习不少!
遗憾的是,我到现在还是没分,过两天有分了给大家赏钱结贴!
我也遇到同样的问题,但是我用LoadLibrary()来打开dll却能成功,这又是为啥呢?
我也出来同样的问题,驱动装载成功,但是打开(CreateFile)的时候出现错误,用GetLastError()得到的错误号为55(指定网络资源或设备不再可用).
我的测试程序和你贴出来的差不多,请问哪里有问题?
打开函数:
HANDLE hSin=CreateFile(TEXT("SIN1:"), GENERIC_WRITE | GENERIC_READ, 0, NULL, OPEN_EXISTING, 0, NULL);