首页
社区
课程
招聘
[求助]不明白以下代码复制IO堆栈的作用
发表于: 2009-11-19 11:55 3840

[求助]不明白以下代码复制IO堆栈的作用

2009-11-19 11:55
3840
NTSTATUS Ctrl2capDispatchRead(
    IN PDEVICE_OBJECT DeviceObject,
    IN PIRP Irp )
{
    PDEVICE_EXTENSION   devExt;
    PIO_STACK_LOCATION  currentIrpStack;
    PIO_STACK_LOCATION  nextIrpStack;

    //
    // Gather our variables.
    //
    devExt = (PDEVICE_EXTENSION) DeviceObject->DeviceExtension;
    currentIrpStack = IoGetCurrentIrpStackLocation(Irp);
    nextIrpStack = IoGetNextIrpStackLocation(Irp);   

    //
    // Push params down for keyboard class driver.
    //就是以下这句,不知道下层驱动设备为什么要用到这层IO堆栈中的参数,请说明   
    *nextIrpStack = *currentIrpStack;

    //  
    // Set the completion callback, so we can "frob" the keyboard data.
    //            
    IoSetCompletionRoutine( Irp, Ctrl2capReadComplete,
                            DeviceObject, TRUE, TRUE, TRUE );

    //
    // Return the results of the call to the keyboard class driver.
    //
    return IoCallDriver( devExt->TopOfStack, Irp );
}

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (2)
雪    币: 7651
活跃值: (523)
能力值: ( LV9,RANK:610 )
在线值:
发帖
回帖
粉丝
2
其实就是IoCopyCurrentStackLocationToNext嘛,当前堆栈的Next,到了下层设备就变成Current了,取CurrentStackLocation有啥用,不用多讲了吧?
2009-11-19 16:11
0
雪    币: 206
活跃值: (315)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
明白了,谢谢了
2009-11-19 21:11
0
游客
登录 | 注册 方可回帖
返回
//