为什么流接口驱动CreateFile失败呢?

sagis 2008-01-29 05:34:40
HANDLE handle=CreateFile(_T("TTT1:"),GENERIC_READ|GENERIC_WRITE,0,
NULL,OPEN_EXISTING,0,NULL);
ASSERT(handle);
if (handle == INVALID_HANDLE_VALUE) // cannot open the drive
{
MessageBox(NULL,_T("CreateFile失败"),_T("title"),MB_OK);
}
这为什么呢?
...全文
152 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
freshman45 2008-02-01
  • 打赏
  • 举报
回复
那就说明,
你的驱动没有加载到你的系统中去了。
当然就调用不起来了,
那就是你编译驱动到nk里面出现问题了。
编译的时候至少应该做到如下:
1、驱动里面应该至少有这两个文件.c、.def吧
2、RELEASE目录下的platform.bib添加如下:
TTT.dll $(_FLATRELEASEDIR)\TTT.dll NK SH
3、在platform.reg中定义相应的注册表信息,
你自己在查查看,
就是你的驱动没有正确加载进去了。
sagis 2008-02-01
  • 打赏
  • 举报
回复
to freshman45

这device.exe里面没有出现我的驱动啊
sagis 2008-02-01
  • 打赏
  • 举报
回复
奇怪了,在platform builder5里面,可以了,5里面工程建好后自动有test.def、test.reg、test.bib等文件


4.2里面都是我手动建的,内容和5里面一样


现在5里面有驱动,4.2怎么还是不行?

freshman45 2008-01-31
  • 打赏
  • 举报
回复
你有没有看下,
device.exe里面是否有你的dll.
再着,在用GetLastError获得createfile失败的原因或在驱动里面加output语句调试.

sagis 2008-01-31
  • 打赏
  • 举报
回复
现在远程注册表里面有
[HKEY_LOCAL_MACHINE\Drivers\BuiltIn\test]
"DeviceArrayIndex"=dword:0
"Prefix"="TTT"
"Dll"="test.Dll"
"Order"=dword:20
"Index"=dword:1

但target/CE modules 里面没有出现test.Dll
sagis 2008-01-31
  • 打赏
  • 举报
回复
我在project.reg里面加了 都没用
freshman45 2008-01-31
  • 打赏
  • 举报
回复

在上面的画红线的地方看看有没有你的驱动程序.
这个是首要确定的。
sagis 2008-01-31
  • 打赏
  • 举报
回复
我已经在
project specific files/project.bib里面加了
test.dll $(_FLATRELEASEDIR)\test.dll NK SH


模拟器里面的\windows目录也有kt.dll
su_wy9901 2008-01-31
  • 打赏
  • 举报
回复
模拟器没搞过,真实设备的话,是这样的

除了注册表,应该把test.dll加入project.bib里,这样dll文件才能被包含到镜像里,才能在启动的时候被加载

test.dll $(_FLATRELEASEDIR)\test.dll NK HC

LZ可以试下哦
sagis 2008-01-31
  • 打赏
  • 举报
回复
device.exe里面是否有你的dll.
>>>>>>>>>>>>>>>>>

这device.exe里面怎么看呢?
sagis 2008-01-30
  • 打赏
  • 举报
回复
怎么我的test.dll怎么没有在target/CE modules 里面出现?
在\windows目录里面有

我是新建个空的项目,然后加test.reg
[HKEY_LOCAL_MACHINE\Drivers\BuiltIn\test]
"DeviceArrayIndex"=dword:0
"Prefix"="TTT"
"Dll"="test.Dll"
"Order"=dword:20
"Index"=dword:1


sagis 2008-01-30
  • 打赏
  • 举报
回复
我用的是模拟器,在PB下的

freshman45 2008-01-30
  • 打赏
  • 举报
回复
1、看看你的驱动是否已经加载到device.exe里面了,
2、再者看看你的设备名称是否对了,可以查看注册表项
"Prefix"="TTT"
"Index"=dword:1
是否一致。
freshman45 2008-01-30
  • 打赏
  • 举报
回复
你用的是模拟器还是真实的设备?
用的编译环境是PB?
「已注销」 2008-01-29
  • 打赏
  • 举报
回复
看看你驱动的TTT_open 函数,添加调试语句,看看哪里出错了。。。

19,504

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 嵌入开发(WinCE)
社区管理员
  • 嵌入开发(WinCE)社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧