首页
社区
课程
招聘
[求助]驱动无法正常停止卸载.
发表于: 2009-9-19 17:53 4955

[求助]驱动无法正常停止卸载.

2009-9-19 17:53
4955
在某位大牛的帮助下终于把通信什么的弄好了,在此感谢那位大牛.
    但是现在有个问题,驱动无法正确卸载,卸载后必须重新启动才能重新加载.
    大牛说是WssLockKeyDispatch这个导致的,但是找了半天也没找到什么.
    这里恳请大家帮助下,这里先谢谢了.

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

收藏
免费 0
支持
分享
最新回复 (5)
雪    币: 635
活跃值: (101)
能力值: ( LV12,RANK:420 )
在线值:
发帖
回帖
粉丝
2
你没有设unload,当然卸载不了
2009-9-19 17:59
0
雪    币: 208
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
有设置的,
VOID
KeyDriverUnload( PDRIVER_OBJECT KeyDriver )
{
        PDEVICE_OBJECT KeyFilterDevice ;     
        PDEVICE_OBJECT KeyDevice ;
        PDEVICE_EXTENSION KeyExtension;
        PIRP Irp;
        NTSTATUS ntStatus;

        WCHAR                   deviceLinkBuffer[]  = L"\\DosDevices\\WssLockKey";
        UNICODE_STRING          deviceLinkUnicodeString;

                //////////////////////////////////////2009.9.19///////////////////////////////////////////////

    DbgPrint(("WssLockKey.SYS: unloading\n"));

    //
    // Delete the symbolic link for our device
    //
    RtlInitUnicodeString( &deviceLinkUnicodeString, DOS_DEVICE_NAME );
    IoDeleteSymbolicLink( &deviceLinkUnicodeString );
//////////////////////////////////////2009.9.19///////////////////////////////////////////////

    KeyFilterDevice = KeyDriver->DeviceObject;
        KeyExtension = ( PDEVICE_EXTENSION ) KeyFilterDevice->DeviceExtension;
        KeyDevice = KeyExtension->TargetDevice;

        IoDetachDevice( KeyDevice );
        //
        // 如果还有 IRP 未完成,且当前 IRP 有效则尝试取消这个 IRP
        //
        if ( KeyExtension->IrpsInProgress > 0 && KeyDevice->CurrentIrp != NULL )
        {
                if ( CancelKeyboardIrp( KeyDevice->CurrentIrp ) )
                {
                        //
                        // 成功则直接退出删除键盘过滤设备
                        //
                        DbgPrint( "CancelKeyboardIrp() is ok\n" );
                        goto __End;
                }
        }

        //
        // 如果取消失败,则一直等待按键
        //
        while ( KeyExtension->IrpsInProgress > 0 )
        {
                DbgPrint( "Irp Count:%d\n", KeyExtension->IrpsInProgress );
        }

__End:

    IoDeleteDevice( KeyFilterDevice );

        return ;
}
2009-9-19 18:04
0
雪    币: 247
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
VOID类型函数最后还有return?
2009-9-19 22:56
0
雪    币: 208
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
请赐教了- -
2009-9-20 18:08
0
雪    币: 9
活跃值: (314)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
怎么解决的啊
2020-4-24 16:18
0
游客
登录 | 注册 方可回帖
返回
//