当前位置: 代码迷 >> WinCE >> 做了一个流驱动 ANYDrv.dll, 它加载进了注册表Drivers\BuiltIn, 但进不了Drivers\Active, 怎么正确加载
  详细解决方案

做了一个流驱动 ANYDrv.dll, 它加载进了注册表Drivers\BuiltIn, 但进不了Drivers\Active, 怎么正确加载

热度:55   发布时间:2016-04-28 12:39:50.0
做了一个流驱动 ANYDrv.dll, 它加载进了注册表Drivers\BuiltIn, 但进不了Drivers\Active, 如何正确加载?
做了一个流驱动 ANYDrv.dll, 它加载进了注册表Drivers\BuiltIn, 但进不了Drivers\Active, 如何正确加载?

ANYDrv.reg
[HKEY_LOCAL_MACHINE\Drivers\BuiltIn\ANYDrv]
"Index"=dword:1
"Prefix"="ANY"
"Dll"="ANYDrv.dll"
"Order"=dword:0


\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\

\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\

hGPIO = CreateFile(L"ANY1:", GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0, 0);
if (hGPIO == INVALID_HANDLE_VALUE)
{
       TRACE(L" ERR \r\n");
       TRACE(L" ERR = %d \r\n", GetLastError());  //出现55号错误,设置未加载 
}


------解决方案--------------------
platform.reg和platform.bib都需要添加,检查下,应该没问题
------解决方案--------------------
引用:
platform.reg和platform.bib都添加了.

加载进了注册表Drivers\BuiltIn, 但进不了Drivers\Active.

即使platform.bib中没有加入ANYDrv.dll的内容,只要在platform.reg中加入上述内容,在注册表工具中都可以看到Drivers\BuiltIn的,所以有可能是在platform.bib中加入的内容不对,楼主可以贴出来看看;还有可能就是在加载ANYDrv.dll的时候,执行ANYDrv.dll对应的初始化函数失败,又或者是这个初始化函数中创建线程失败了,这些原因应该都会导致无法成功加载ANYDrv.dll的。
------解决方案--------------------
在XXX_Init 返回的时候 打印出来,看有没有加载成功。
还有dll的路径是否写对了。
------解决方案--------------------
用process viewer 看看dll 是否加载成功。
------解决方案--------------------
看串口打印信息吧,可能是你的驱动初始化的时候有问题,所以没有成功加载啊

------解决方案--------------------
这个问题我也遇到过,我一直用VS2005做流驱动,看过资料说是启动时设备管理器枚举Builtin下的驱动,于是自己改注册表,不过从来没有自动加载过,我的办法是用的时候再自己加载ActiveDevice()
  相关解决方案