首页
社区
课程
招聘
[求助]驱动退出的时候电脑死机
发表于: 2009-8-11 09:54 4956

[求助]驱动退出的时候电脑死机

2009-8-11 09:54
4956
各位大牛:

   小弟最近用MFC写了个程序,里面用了驱动。驱动的加载时在OnInitDialog()完成的,使用的是如下的加载方式:(copy的别人的程序
  bool MyZwLoadDriver(char * szDrvName, char * szDrvPath)
{
        HMODULE hNtdll = NULL;
        hNtdll = LoadLibrary( "ntdll.dll" );
        RtlAnsiStringToUnicodeString = (RTLANSISTRINGTOUNICODESTRING)GetProcAddress( hNtdll, "RtlAnsiStringToUnicodeString");
        RtlFreeUnicodeString = (RTLFREEUNICODESTRING)GetProcAddress( hNtdll, "RtlFreeUnicodeString");
        ZwLoadDriver = (ZWLOADDRIVER)
                GetProcAddress( hNtdll, "ZwLoadDriver");
        ZwUnloadDriver = (ZWLOADDRIVER)
                GetProcAddress( hNtdll, "ZwUnloadDriver");
        //注册驱动程序
        if(LoadDriver(szDrvName, szDrvPath) == false)
                return false;
        return true;
}
卸载时在一个退出的函数里面实现的,类似OnButtonClose()的函数,卸载函数如下(同样是copy的)
  bool MyZwUnloadDriver(char * szDrvName, char * szDrvPath)
{     
        HMODULE hNtdll = NULL;
        hNtdll = LoadLibrary( "ntdll.dll" );
        RtlAnsiStringToUnicodeString = (RTLANSISTRINGTOUNICODESTRING)GetProcAddress( hNtdll, "RtlAnsiStringToUnicodeString");
    RtlFreeUnicodeString = (RTLFREEUNICODESTRING)GetProcAddress( hNtdll, "RtlFreeUnicodeString");
        ZwUnloadDriver = (ZWLOADDRIVER)GetProcAddress( hNtdll, "ZwUnloadDriver");
        if(UnloadDriver(szDrvName, szDrvPath) == false)
                return false;

        return true;
}

  但是应用程序一关闭,电脑就死机了,不知道为啥?  忘各位高手不吝赐教~~~~

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 0
支持
分享
最新回复 (1)
雪    币: 234
活跃值: (83)
能力值: ( LV10,RANK:170 )
在线值:
发帖
回帖
粉丝
2
问题解决了,原来问题不是出在驱动的加卸载上面,而是卸载之前,没把SSDT表修改回来。
2009-8-11 16:05
0
游客
登录 | 注册 方可回帖
返回
//