zoukankan      html  css  js  c++  java
  • 《Windows内核安全与驱动开发》4.1 文件操作

    《Windows内核安全与驱动开发》阅读笔记 -- 索引目录

    《Windows内核安全与驱动开发》4.1 文件操作

    从 C:a.txt 中读取一部分内容并利用 DbgPrint 输出。

    #include <ntifs.h>
    
    
    //提供一个卸载函数,让程序能卸载,如果没有这个函数,驱动将不能卸载。
    VOID UnDriver(PDRIVER_OBJECT driver)
    {
        KdPrint(("卸载驱动成功"));
    }
    //入口函数,相当于main。
    NTSTATUS DriverEntry(PDRIVER_OBJECT driver, PUNICODE_STRING reg_path)
    {
        // 要返回的文件句柄
        HANDLE file_handle = NULL;
    
        // 返回值
        NTSTATUS status;
    
        // 文件状态
        IO_STATUS_BLOCK io_status;
    
        // 首先初始化含有文件路径的OBJECT_ATTRIBUTE
        OBJECT_ATTRIBUTES object_attributes;
        UNICODE_STRING ufile_name = RTL_CONSTANT_STRING(L"\??\C:\a.txt");
        InitializeObjectAttributes(
            &object_attributes,
            &ufile_name,
            OBJ_CASE_INSENSITIVE | OBJ_KERNEL_HANDLE,
            NULL,
            NULL);
    
        // 以FILE_OPEN_IF 方式打开文件
        status = ZwCreateFile(
            &file_handle,
            GENERIC_READ | GENERIC_WRITE,
            &object_attributes,
            &io_status,
            NULL,
            FILE_ATTRIBUTE_NORMAL,
            FILE_SHARE_READ,
            FILE_OPEN_IF,
            FILE_NON_DIRECTORY_FILE | FILE_RANDOM_ACCESS | FILE_SYNCHRONOUS_IO_NONALERT,
            NULL,
            0);
    
        // 申请缓冲区 
        UCHAR buf[512];
        // 读出文件内容并且打印出来
        status = ZwReadFile(
            file_handle, NULL, NULL, NULL,
            &io_status, buf, 512, NULL, NULL);
        // 打印出来
        DbgPrint("%s",buf);
        driver->DriverUnload = UnDriver;
        return STATUS_SUCCESS;
    }
  • 相关阅读:
    Java
    Java
    Java
    Java
    Java
    Hang Gliding线段树
    Biggest Number深搜
    2021年暑假康复性训练(Codeforces Round #731 (Div. 3))全题解
    Python GUI tkinter 随机生成题目
    ModuleNotFoundError: No module named ‘exceptions‘ 情况解决
  • 原文地址:https://www.cnblogs.com/onetrainee/p/11995226.html
Copyright © 2011-2022 走看看