关于键盘驱动,过滤

开心的卡夫卡 2009-11-16 07:24:04
代码如下:
NTSTATUS c2pDispatchRead(
IN PDEVICE_OBJECT DeviceObject,
IN PIRP Irp )
{
NTSTATUS status = STATUS_SUCCESS;
PC2P_DEV_EXT devExt;
PIO_STACK_LOCATION currentIrpStack;
KEVENT waitEvent;
KeInitializeEvent( &waitEvent, NotificationEvent, FALSE );

if (Irp->CurrentLocation == 1)
{
ULONG ReturnedInformation = 0;
KdPrint(("Dispatch encountered bogus current location\n"));
status = STATUS_INVALID_DEVICE_REQUEST;
Irp->IoStatus.Status = status;
Irp->IoStatus.Information = ReturnedInformation;
IoCompleteRequest(Irp, IO_NO_INCREMENT);
return(status);
}

// 全局变量键计数器加1
gC2pKeyCount++;

// 得到设备扩展。目的是之后为了获得下一个设备的指针。
devExt =
(PC2P_DEV_EXT)DeviceObject->DeviceExtension;

// 设置回调函数并把IRP传递下去。 之后读的处理也就结束了。
// 剩下的任务是要等待读请求完成。
currentIrpStack = IoGetCurrentIrpStackLocation(Irp);
IoCopyCurrentIrpStackLocationToNext(Irp);
IoSetCompletionRoutine( Irp, c2pReadComplete,
DeviceObject, TRUE, TRUE, TRUE );
return IoCallDriver( devExt->LowerDeviceObject, Irp );
}
问题:为什么要在开始判断Irp->CurrentLocation == 1;而对于是一的情况为什么有返回了。请帮忙,谢谢
...全文
135 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
ms2146 2009-12-18
  • 打赏
  • 举报
回复
不知道啊,也想知道下答案,为什么跑判断==1呢?又为什么==1了就返回
开心的卡夫卡 2009-11-20
  • 打赏
  • 举报
回复
up-up
开心的卡夫卡 2009-11-19
  • 打赏
  • 举报
回复
没有人回答么~~~~?
开心的卡夫卡 2009-11-18
  • 打赏
  • 举报
回复
自己帮忙顶下 。呵呵
夜鹰 2009-11-16
  • 打赏
  • 举报
回复
这个问题请到开发版提问,谢谢!

21,597

社区成员

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

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