注意:1.缓冲区一定要有大小!!!
· 2.遇到函数返回值为NTSTATUS类型的函数执行错误时,可以 查询对应的返回值对应得错误情况
#include <ntddk.h>VOID UnloadDriver(PDRIVER_OBJECT pDriver){ DbgPrint("卸载成功\n");}NTSTATUS DriverEntry(PDRIVER_OBJECT pDriver, PUNICODE_STRING pRegPath){ UNICODE_STRING file_name = RTL_CONSTANT_STRING(L"\\??\\d:\\test.txt"); NTSTATUS status = NULL; IO_STATUS_BLOCK block; OBJECT_ATTRIBUTES file; HANDLE file_handle = NULL; PWCHAR pWch = ExAllocatePool(NonPagedPool, sizeof(WCHAR)* 10); LARGE_INTEGER offset = {0}; InitializeObjectAttributes( &file, &file_name, OBJ_CASE_INSENSITIVE |OBJ_KERNEL_HANDLE, NULL, NULL); status = ZwCreateFile(&file_handle, GENERIC_READ | GENERIC_WRITE, &file, &block, NULL, FILE_ATTRIBUTE_NORMAL, FILE_SHARE_READ | FILE_SHARE_WRITE, FILE_OPEN_IF, FILE_SYNCHRONOUS_IO_NONALERT | FILE_NON_DIRECTORY_FILE | FILE_RANDOM_ACCESS, NULL, 0); if (!NT_SUCCESS(status)) { DbgPrint("打开文件失败"); return STATUS_SUCCESS; } status = ZwReadFile(file_handle, NULL, NULL, NULL, &block, pWch, sizeof(WCHAR)* 10, &offset, NULL ); if (!NT_SUCCESS(status)) { DbgPrint("读取文件失败\n"); return STATUS_SUCCESS; } DbgPrint("%s", pWch); ZwClose(file_handle); DbgPrint("驱动加载成功\n"); pDriver->DriverUnload = UnloadDriver;}