xuAmigo
驱动小牛
驱动小牛
  • 注册日期2004-11-11
  • 最后登录2006-01-12
  • 粉丝0
  • 关注0
  • 积分58分
  • 威望10点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1138回复:8

问个CreateFile的问题

楼主#
更多 发布于:2005-04-06 18:32
我调试了win2k ddk下的serial驱动程序,得到symboliclinkname=\"\\DosDevices\\COM1\",DeviceName=\"\\Device\\Serial0\",用createfile(“\\\\\\\\.\\\\DosDevices\\\\COM1”,xxxx)函数为什么打不开,然后我又将第一个参数改成DeviceName对应的字符,但也打不开,请问为什么
benbenhuhu
驱动牛犊
驱动牛犊
  • 注册日期2004-01-05
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分2分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2005-04-06 19:28
symboliclinkname=\"\\\\??\\\\COM1\"
idaxsy
驱动大牛
驱动大牛
  • 注册日期2004-12-09
  • 最后登录2006-03-17
  • 粉丝0
  • 关注0
  • 积分386分
  • 威望54点
  • 贡献值0点
  • 好评度8点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2005-04-07 09:21
应用层只能访问??里的名称。
[b]万水千山总是情,回个帖子行不行?[/b]
bmyyyud
驱动老牛
驱动老牛
  • 注册日期2002-02-22
  • 最后登录2010-01-21
  • 粉丝0
  • 关注0
  • 积分1000分
  • 威望130点
  • 贡献值0点
  • 好评度106点
  • 原创分0分
  • 专家分0分
地板#
发布于:2005-04-07 09:31
看我的垃圾帖
http://www.driverdevelop.com/forum/html_89958.html?1112837434
滚滚长江东逝水 浪花淘尽英雄 是非成败转头空 青山依旧在 几度夕阳红 白发渔樵江渚上 惯看秋月春风 一壶浊酒喜相逢 古今多少事 尽付笑谈中
xuAmigo
驱动小牛
驱动小牛
  • 注册日期2004-11-11
  • 最后登录2006-01-12
  • 粉丝0
  • 关注0
  • 积分58分
  • 威望10点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2005-04-07 10:02
我按你们说的写了,是这样的CreateFile(\"\\\\??\\\\COM1\",XXXXXX);提示说找不到指定的路径,请问为什么,第一个参数有错吗
xuAmigo
驱动小牛
驱动小牛
  • 注册日期2004-11-11
  • 最后登录2006-01-12
  • 粉丝0
  • 关注0
  • 积分58分
  • 威望10点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2005-04-07 10:13
我又查了一些资料,\\\\.\\就代表\\\\??了,所以我写成了CreateFile(\"\\\\\\\\.\\\\COM1\",XXX),是可以打开了,但用DeviceIoControl()与驱动通信时会出现违法访问的错误呢,
xuAmigo
驱动小牛
驱动小牛
  • 注册日期2004-11-11
  • 最后登录2006-01-12
  • 粉丝0
  • 关注0
  • 积分58分
  • 威望10点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2005-04-07 12:22
现在我写了一个与serial驱动通信的应用程序,代码如下
#define SERIAL_ForbidCOMM (ULONG) CTL_CODE( FILE_DEVICE_SERIAL_PORT, 0x900, METHOD_BUFFERED, FILE_ANY_ACCESS )
HANDLE hSysfile =NULL;
char path[] =\"\\\\\\\\.\\\\COM1\";
hSysfile =CreateFile(path, GENERIC_READ|GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0, NULL);
if (hSysfile == INVALID_HANDLE_VALUE)
{
CString s;
s.Format(\"%d\",GetLastError());
MessageBox(s);
//return ;
}

DWORD version,junk;
BOOL bStatus =DeviceIoControl(hSysfile, SERIAL_ForbidCOMM, NULL, 0, &version, sizeof(version), &junk, NULL);
if(!bStatus)
{
CString s;
s.Format(\"%d\",GetLastError());
MessageBox(s);
}
CloseHandle(hSysfile);
DeviceIoControl总是提示参数错误,CreateFile打开是成功的,请大家帮帮忙,
bmyyyud
驱动老牛
驱动老牛
  • 注册日期2002-02-22
  • 最后登录2010-01-21
  • 粉丝0
  • 关注0
  • 积分1000分
  • 威望130点
  • 贡献值0点
  • 好评度106点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2005-04-07 15:03
这么说是运行错误,看看你的SERIAL_ForbidCOMM在驱动中是不是有效
滚滚长江东逝水 浪花淘尽英雄 是非成败转头空 青山依旧在 几度夕阳红 白发渔樵江渚上 惯看秋月春风 一壶浊酒喜相逢 古今多少事 尽付笑谈中
xuAmigo
驱动小牛
驱动小牛
  • 注册日期2004-11-11
  • 最后登录2006-01-12
  • 粉丝0
  • 关注0
  • 积分58分
  • 威望10点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2005-04-07 15:33
问题解决了,原来我的驱动根本没有安装,给分,但还想问一下我在应用程序中用DeviceIoControl()函数与另一个驱动程序通讯时出现功能错误,请问这又该如何解决
游客

返回顶部