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

关于PARCLASS并口驱动的问题

楼主#
更多 发布于:2005-04-15 14:11
to fangbin:
我的问题与你的一样,用handle = CreateFile(\"\\\\\\\\.\\\\LPT1\",XXXX)打开成功,但用DeviceIoControl(handle,code,xxx)与驱动通信时返回为“1“(即功能错误),其中code是我自定义的功能代码,不知道是什么原因请大家帮忙
seaquester
驱动大牛
驱动大牛
  • 注册日期2002-05-22
  • 最后登录2016-06-16
  • 粉丝0
  • 关注0
  • 积分500分
  • 威望115点
  • 贡献值0点
  • 好评度107点
  • 原创分0分
  • 专家分52分
沙发#
发布于:2005-04-15 15:34
to fangbin:
我的问题与你的一样,用handle = CreateFile(\"\\\\\\\\.\\\\LPT1\",XXXX)打开成功,但用DeviceIoControl(handle,code,xxx)与驱动通信时返回为“1“(即功能错误),其中code是我自定义的功能代码,不知道是什么原因请大家帮忙


自定义的功能代码? LPT1应该是打印口(并口),驱动是你自己的吗?如果不是的话,返回失败就是合理的,因为,驱动不能识别你定义的IoCtl Code。
八风舞遥翩,九野弄清音。 鸣高常向月,善舞不迎人。
xuAmigo
驱动小牛
驱动小牛
  • 注册日期2004-11-11
  • 最后登录2006-01-12
  • 粉丝0
  • 关注0
  • 积分58分
  • 威望10点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2005-04-16 09:59
这个功能代码我定义了,如#define PARCLASS_ForbidLPT (ULONG) CTL_CODE(FILE_DEVICE_PARALLEL_PORT, 0x902, METHOD_BUFFERED, FILE_ANY_ACCESS),CreateFile(\"\\\\\\\\.\\\\LPT1\",XXX)打开成功了,“LPT1”是并口,
应用层的DeviceIoControl()始终返回“1”,驱动也无法跟进去调试,
bmyyyud
驱动老牛
驱动老牛
  • 注册日期2002-02-22
  • 最后登录2010-01-21
  • 粉丝0
  • 关注0
  • 积分1000分
  • 威望130点
  • 贡献值0点
  • 好评度106点
  • 原创分0分
  • 专家分0分
地板#
发布于:2005-04-16 10:17
这个功能代码我定义了,如#define PARCLASS_ForbidLPT (ULONG) CTL_CODE(FILE_DEVICE_PARALLEL_PORT, 0x902, METHOD_BUFFERED, FILE_ANY_ACCESS),CreateFile(\"\\\\\\\\.\\\\LPT1\",XXX)打开成功了,“LPT1”是并口,
应用层的DeviceIoControl()始终返回“1”,驱动也无法跟进去调试,

自定义的功能代码? LPT1应该是打印口(并口),驱动是你自己的吗?是说并口驱动是你做的吗?如果是你做的可以跟踪一下.如果不是的话,返回失败就是合理的,因为,驱动不能识别你定义的IoCtl Code。
滚滚长江东逝水 浪花淘尽英雄 是非成败转头空 青山依旧在 几度夕阳红 白发渔樵江渚上 惯看秋月春风 一壶浊酒喜相逢 古今多少事 尽付笑谈中
xuAmigo
驱动小牛
驱动小牛
  • 注册日期2004-11-11
  • 最后登录2006-01-12
  • 粉丝0
  • 关注0
  • 积分58分
  • 威望10点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2005-04-16 10:31
并口驱动是win2000ddk的ParClass的例子,我加了一个自定义的控制代码,然后想从应用程序中与驱动通信的,就算不加我的这个控制代码,驱动中的IRP_MJ_DEVICE_CONTROL处理例程也跟不进去,只有注释掉一些代码才可以跟踪进去,不知什么原因
xuAmigo
驱动小牛
驱动小牛
  • 注册日期2004-11-11
  • 最后登录2006-01-12
  • 粉丝0
  • 关注0
  • 积分58分
  • 威望10点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2005-04-16 12:38
请问那我应该怎样定义控制代码才使DeviceIoControl()返回成功呢,因为我以前都是这样写的而且没有问题,请大家帮忙吧,
bmyyyud
驱动老牛
驱动老牛
  • 注册日期2002-02-22
  • 最后登录2010-01-21
  • 粉丝0
  • 关注0
  • 积分1000分
  • 威望130点
  • 贡献值0点
  • 好评度106点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2005-04-16 17:09
请问那我应该怎样定义控制代码才使DeviceIoControl()返回成功呢,因为我以前都是这样写的而且没有问题,请大家帮忙吧,

看看在IRP_MJ_DEVICE_CONTROL中对应子控制码0x902处理中只加入一条这个
return STATUS_SUCCESS;应该能成功
滚滚长江东逝水 浪花淘尽英雄 是非成败转头空 青山依旧在 几度夕阳红 白发渔樵江渚上 惯看秋月春风 一壶浊酒喜相逢 古今多少事 尽付笑谈中
xuAmigo
驱动小牛
驱动小牛
  • 注册日期2004-11-11
  • 最后登录2006-01-12
  • 粉丝0
  • 关注0
  • 积分58分
  • 威望10点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2005-04-16 20:13
我是这样写的,case PARCLASS_ForbidLPT:
isLPT = FALSE;return STATUS_SUCCESS;还是不行呀,我用WriteFile()却可以跟踪到IRP_MJ_WRITE处理例程,真是奇怪呀,
游客

返回顶部