Azreal
驱动牛犊
驱动牛犊
  • 注册日期2005-04-24
  • 最后登录2011-03-17
  • 粉丝0
  • 关注0
  • 积分336分
  • 威望37点
  • 贡献值0点
  • 好评度35点
  • 原创分0分
  • 专家分0分
阅读:1762回复:5

请教,我在mirror驱动里只要加了创建文件的代码,驱动就不能启动了``

楼主#
更多 发布于:2007-08-30 02:02
请教,我在mirror驱动里只要加了创建文件的代码,驱动就不能启动了``
static int nCount = 0;
       if (nCount < 1)
       {
            if(KeGetCurrentIrql() != PASSIVE_LEVEL)
            {
                DISPDBG((0, "Current Level is not PASSIVE_LEVEL!!!"));
                return STATUS_INVALID_DEVICE_STATE;
            }

            RtlInitUnicodeString( &logFileUnicodeString, logFileNameBuffer );
            InitializeObjectAttributes( &objectAttributes, &logFileUnicodeString,
            OBJ_CASE_INSENSITIVE, NULL, NULL );

            DISPDBG((0, "ntStatus:%08x", ntStatus));
            ntStatus = ZwCreateFile( &hLogFile, FILE_WRITE_DATA|SYNCHRONIZE,
            &objectAttributes, &ioStatus, NULL,
            FILE_ATTRIBUTE_NORMAL, FILE_SHARE_READ,
            FILE_OPEN_IF, FILE_SYNCHRONOUS_IO_NONALERT, NULL, 0 );

            ntStatus = ZwClose(hLogFile);
            DISPDBG((0,"ntStatus:%08x",ntStatus));
       }

请问我是不是哪里没注意到或错了``谢谢``!

最新喜欢:

LeopardLeopar...
Azreal
驱动牛犊
驱动牛犊
  • 注册日期2005-04-24
  • 最后登录2011-03-17
  • 粉丝0
  • 关注0
  • 积分336分
  • 威望37点
  • 贡献值0点
  • 好评度35点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2007-08-30 02:03
这里是变量定义

    WCHAR             logFileNameBuffer[] = L"\\Device\\HarddiskVolume1\\mylog.LOG";
    UNICODE_STRING       logFileUnicodeString;
    OBJECT_ATTRIBUTES     objectAttributes;
    HANDLE             hLogFile;
    IO_STATUS_BLOCK       ioStatus;
    NTSTATUS           ntStatus = 0;
coolboylmk
驱动牛犊
驱动牛犊
  • 注册日期2006-11-09
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分2分
  • 威望71点
  • 贡献值0点
  • 好评度59点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2007-08-30 10:39
显示驱动链接到win32k.sys,只能调用EngXXX,要用ZwCreateFile这种东西你得另想办法
Azreal
驱动牛犊
驱动牛犊
  • 注册日期2005-04-24
  • 最后登录2011-03-17
  • 粉丝0
  • 关注0
  • 积分336分
  • 威望37点
  • 贡献值0点
  • 好评度35点
  • 原创分0分
  • 专家分0分
地板#
发布于:2007-08-30 21:45
啊``这样啊```
coolboylmk ,还有一个问题,通过EngAllocUserMem申请的指针,可以直接在ring3层里访问吗?如果不行``要怎样做呢?
或者在ring3里的指针,要怎样才可以在mirror驱动里使用?
coolboylmk
驱动牛犊
驱动牛犊
  • 注册日期2006-11-09
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分2分
  • 威望71点
  • 贡献值0点
  • 好评度59点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2007-08-30 22:38
EngAllocUserMem是在当前进程地址空间里分配内存,可以从ring3访问,但是驱动只能在切换到该进程上下文时才能访问这块内存。

看看这篇文章,应该对你有帮助
http://support.microsoft.com/kb/191840/en-us
Azreal
驱动牛犊
驱动牛犊
  • 注册日期2005-04-24
  • 最后登录2011-03-17
  • 粉丝0
  • 关注0
  • 积分336分
  • 威望37点
  • 贡献值0点
  • 好评度35点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2007-08-30 23:06
原来如此。。但是当前进程很难确定哦。。
谢谢你!我去看看你给的链接!
游客

返回顶部