《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; }