阅读:1576回复:7
关于PARCLASS并口驱动的问题
to fangbin:
我的问题与你的一样,用handle = CreateFile(\"\\\\\\\\.\\\\LPT1\",XXXX)打开成功,但用DeviceIoControl(handle,code,xxx)与驱动通信时返回为“1“(即功能错误),其中code是我自定义的功能代码,不知道是什么原因请大家帮忙 |
|
沙发#
发布于:2005-04-15 15:34
to fangbin: 自定义的功能代码? LPT1应该是打印口(并口),驱动是你自己的吗?如果不是的话,返回失败就是合理的,因为,驱动不能识别你定义的IoCtl Code。 |
|
|
板凳#
发布于: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”,驱动也无法跟进去调试, |
|
地板#
发布于: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”是并口, 自定义的功能代码? LPT1应该是打印口(并口),驱动是你自己的吗?是说并口驱动是你做的吗?如果是你做的可以跟踪一下.如果不是的话,返回失败就是合理的,因为,驱动不能识别你定义的IoCtl Code。 |
|
|
地下室#
发布于:2005-04-16 10:31
并口驱动是win2000ddk的ParClass的例子,我加了一个自定义的控制代码,然后想从应用程序中与驱动通信的,就算不加我的这个控制代码,驱动中的IRP_MJ_DEVICE_CONTROL处理例程也跟不进去,只有注释掉一些代码才可以跟踪进去,不知什么原因
|
|
5楼#
发布于:2005-04-16 12:38
请问那我应该怎样定义控制代码才使DeviceIoControl()返回成功呢,因为我以前都是这样写的而且没有问题,请大家帮忙吧,
|
|
6楼#
发布于:2005-04-16 17:09
请问那我应该怎样定义控制代码才使DeviceIoControl()返回成功呢,因为我以前都是这样写的而且没有问题,请大家帮忙吧, 看看在IRP_MJ_DEVICE_CONTROL中对应子控制码0x902处理中只加入一条这个 return STATUS_SUCCESS;应该能成功 |
|
|
7楼#
发布于:2005-04-16 20:13
我是这样写的,case PARCLASS_ForbidLPT:
isLPT = FALSE;return STATUS_SUCCESS;还是不行呀,我用WriteFile()却可以跟踪到IRP_MJ_WRITE处理例程,真是奇怪呀, |
|