首页
社区
课程
招聘
[原创]键盘驱动 卸载问题求解。。。。。。。
发表于: 2011-9-21 13:58 5646

[原创]键盘驱动 卸载问题求解。。。。。。。

2011-9-21 13:58
5646
寒江独钓里的键盘驱动 卸载 是通过计数来判断,实现卸载,卸载之前必须等待计数为0,通过按按键处理完多余IRP才能卸载。。。。

    PDEVICE_OBJECT DeviceObject;
    PDEVICE_OBJECT OldDeviceObject;
    PC2P_DEV_EXT devExt;

    LARGE_INTEGER        lDelay;
    PRKTHREAD CurrentThread;
    //delay some time
    lDelay = RtlConvertLongToLargeInteger(100 * DELAY_ONE_MILLISECOND);
    CurrentThread = KeGetCurrentThread();
    // 把当前线程设置为低实时模式,以便让它的运行尽量少影响其他程序。
    KeSetPriorityThread(CurrentThread, LOW_REALTIME_PRIORITY);

    UNREFERENCED_PARAMETER(DriverObject);
    KdPrint(("DriverEntry unLoading...\n"));

    // 遍历所有设备并一律解除绑定
    DeviceObject = DriverObject->DeviceObject;
    while (DeviceObject)
        //KeWaitForSingleObject(&g_waitEvent,Executive,KernelMode,FALSE,NULL);
    {
        // 解除绑定并删除所有的设备
        c2pDetach(DeviceObject);
        DeviceObject = DeviceObject->NextDevice;
    }
    ASSERT(NULL == DriverObject->DeviceObject);

    while (gC2pKeyCount)
    {
        KeDelayExecutionThread(KernelMode, FALSE, &lDelay);
    }
    KdPrint(("DriverEntry unLoad OK!\n"));

有其他方式实现卸载么?

[课程]FART 脱壳王!加量不加价!FART作者讲授!

收藏
免费 0
支持
分享
最新回复 (3)
雪    币: 7651
活跃值: (523)
能力值: ( LV9,RANK:610 )
在线值:
发帖
回帖
粉丝
2
这个问题坛了上早讨论过,自己搜,IoSetCancelRoutine就OK了~
2011-9-21 21:18
0
雪    币: 2503
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
看看 逛逛 学习学习 !!!!
2011-9-21 21:27
0
雪    币: 3
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
有相关帖子链接吗?
2011-9-22 14:39
0
游客
登录 | 注册 方可回帖
返回
//