首页
社区
课程
招聘
[求助]Windows内核编程:磁盘过滤安装失败
发表于: 2021-6-29 14:49 4959

[求助]Windows内核编程:磁盘过滤安装失败

2021-6-29 14:49
4959
  • Windows 内核编程随书代码的DP项目,在 DriverEntry 项目中通过函数 IoRegisterBootDriverReinitialization 设置了 boot 完成回调
1
2
3
4
5
6
7
8
9
10
11
//将这个驱动的AddDevice函数初始化为DpAddDevice函数
    DriverObject->DriverExtension->AddDevice = DPAddDevice;
    //将这个驱动的unload函数初始化为DpUnload函数
    DriverObject->DriverUnload = DPUnload;
 
    //注册一个boot驱动结束回调,这个回调函数会在所有的boot型驱动都运行完毕之后再去执行
    IoRegisterBootDriverReinitialization(
        DriverObject,
        DPReinitializationRoutine,
        NULL
        );
  • 其中存在以下代码用于打开E盘下的文件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
WCHAR                SparseFilename[] = L"\\??\\E:\\temp.dat";
    UNICODE_STRING        SparseFilenameUni;
    //建立文件时的io操作状态值
    IO_STATUS_BLOCK                    ios = { 0 };
    //建立文件时的对象属性变量
    OBJECT_ATTRIBUTES                ObjAttr = { 0 };
    //设置文件大小的时候使用的文件结尾描述符
    FILE_END_OF_FILE_INFORMATION    FileEndInfo = { 0 };
 
    //打开我们将要用来做转储的文件
    //初始化要打开的文件名
    RtlInitUnicodeString(&SparseFilenameUni,SparseFilename);
    //初始化文件名对应的对象名,这里需要将其初始化为内核对象,并且大小写不敏感
    InitializeObjectAttributes(
        &ObjAttr,
        &SparseFilenameUni,
        OBJ_KERNEL_HANDLE|OBJ_CASE_INSENSITIVE,
        NULL,
        NULL);
    //建立文件,这里需要注意的是,要加入FILE_NO_INTERMEDIATE_BUFFERING选项,避免文件系统再缓存这个文件
    ntStatus = ZwCreateFile(
        &gProtectDevExt->TempFile,
        GENERIC_READ | GENERIC_WRITE,
        &ObjAttr,
        &ios,
        NULL,
        FILE_ATTRIBUTE_NORMAL,
        0,
        FILE_OVERWRITE_IF,
        FILE_NON_DIRECTORY_FILE |
        FILE_RANDOM_ACCESS |
        FILE_SYNCHRONOUS_IO_NONALERT |
        FILE_NO_INTERMEDIATE_BUFFERING,
        NULL,
        0);
  • 程序执行后会报错 STATUS_OBJECT_PATH_NOT_FOUND,我认为是符号链接没有建立好,所以改用了 L"\Device\HarddiskVolume3\temp.dat" 作为文件名,但是仍然出错,这次报错的原因是 STATUS_NO_SUCH_DEVICE
  • 我测试的时候所使用的环境是 windows 10 x64,请问怎样才能让这段代码执行成功。谢谢!

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

收藏
免费 2
支持
分享
最新回复 (1)
雪    币: 405
活跃值: (2280)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
2
 IoRegisterDriverReinitialization 
2021-7-5 14:21
0
游客
登录 | 注册 方可回帖
返回
//