我是靠谱客的博主 粗暴面包,最近开发中收集的这篇文章主要介绍磁盘文件操作_ZwCreateFile_ZwOpenFile_ZwReadFile_ZwWriteFile_ZwSetInformationFile_ZwQueryInformationFile,觉得挺不错的,现在分享给大家,希望可以做个参考。
概述
#include"ntddk.h"
VOID xiezai1(PDRIVER_OBJECT qudongduixiang)
{
KdPrint(("驱动卸载 历程n"));
return;
}
NTSTATUS DriverEntry(PDRIVER_OBJECT qudongduixiang, PUNICODE_STRING zhucebiao1)
{
HANDLE wenjianjubing = NULL;
NTSTATUS zhuangtai1;
UNICODE_STRING wenjianming;
UNICODE_STRING wenjianming2;
OBJECT_ATTRIBUTES duixiangshuxing;
IO_STATUS_BLOCK zhuangtaikuai;//可拥有的控制权
FILE_BASIC_INFORMATION xinxi_jiben;
LARGE_INTEGER linshi1;
PVOID str1;
RtlInitUnicodeString(&wenjianming, L"\??\d:\李赛赛.txt");//初始化文件名
memset(&duixiangshuxing, 0, sizeof(OBJECT_ATTRIBUTES));//对象属性清空
InitializeObjectAttributes(&duixiangshuxing, &wenjianming, OBJ_CASE_INSENSITIVE, NULL, NULL);//对象属性关键是文件名字 不区分大小写
zhuangtai1 = ZwCreateFile(&wenjianjubing, GENERIC_ALL, &duixiangshuxing, &zhuangtaikuai, NULL, FILE_ATTRIBUTE_NORMAL, FILE_SHARE_READ, FILE_OPEN_IF, FILE_NON_DIRECTORY_FILE, NULL, 0);
//就是普通文件属性.其他常用的还有:
// FILE_ATTRIBUTE_DIRECTORY 目录 FILE_SHARE_READ共享读 我们创建这个文件还对这个文件进行操作的时候 别的应用程序对这个文件进行访问的时候 只能进行读这个文件
// FILE_ATTRIBUTE_ARCHIVE 存档 FILE_OPEN_IF 如果不存在创建文件 如果存在打开文件
// FILE_ATTRIBUTE_READONLY 只读
// FILE_ATTRIBUTE_HIDDEN 隐藏
// FILE_ATTRIBUTE_SYSTEM 系统
if (!NT_SUCCESS(zhuangtai1))
{
KdPrint(("ZwCreateFile文件创建失败n"));
}
else
{
KdPrint(("ZwCreateFile文件创建成功n"));
}
ZwClose(wenjianjubing);
//打开文件------------------------------------------------------
RtlInitUnicodeString(&wenjianming, L"\??\d:\李赛赛.txt");//初始化文件名
memset(&duixiangshuxing, 0, sizeof(OBJECT_ATTRIBUTES));//对象属性清空
InitializeObjectAttributes(&duixiangshuxing, &wenjianming, OBJ_CASE_INSENSITIVE, NULL, NULL);//对象属性关键是文件名字 不区分大小写
zhuangtai1 = ZwOpenFile(&wenjianjubing, GENERIC_ALL, &duixiangshuxing, &zhuangtaikuai, FILE_SHARE_READ, FILE_NON_DIRECTORY_FILE); //FILE_NON_DIRECTORY_FILE FILE_SYNCHRONOUS_IO_NONALERT
if (!NT_SUCCESS(zhuangtai1))
{
KdPrint(("ZwOpenFile打开文件失败n"));
}
else
{
KdPrint(("ZwOpenFile打开文件成功n"));
}
zhuangtai1 = ZwQueryInformationFile(wenjianjubing, &zhuangtaikuai, &xinxi_jiben, sizeof(FILE_BASIC_INFORMATION), FileBasicInformation);
if (!NT_SUCCESS(zhuangtai1))
{
ZwClose(wenjianjubing);
}
KdPrint(("%x %x", xinxi_jiben.ChangeTime.QuadPart, xinxi_jiben.FileAttributes));
xinxi_jiben.CreationTime.QuadPart = 0;
xinxi_jiben.FileAttributes |= FILE_ATTRIBUTE_HIDDEN;
zhuangtai1 = ZwSetInformationFile(wenjianjubing, &zhuangtaikuai, &xinxi_jiben, sizeof(FILE_BASIC_INFORMATION), FileBasicInformation);
if (!NT_SUCCESS(zhuangtai1))
{
ZwClose(wenjianjubing);
}
str1 = ExAllocatePool(NonPagedPool, 50);
linshi1.QuadPart = 0;
zhuangtai1 = ZwReadFile(wenjianjubing, NULL, NULL, NULL, &zhuangtaikuai, str1, 50, &linshi1, NULL);
if (!NT_SUCCESS(zhuangtai1))
{
KdPrint(("错误码%x", zhuangtai1));
ZwClose(wenjianjubing);
}
RtlCopyMemory(str1, "n打击日本鬼子", strlen("n打击日本鬼子"));
linshi1.QuadPart = strlen("n打击日本鬼子");
zhuangtai1 = ZwWriteFile(wenjianjubing, NULL, NULL, NULL, &zhuangtaikuai, str1, 50, &linshi1, NULL);
KdPrint(("%s", str1));
ZwClose(wenjianjubing);
qudongduixiang->DriverUnload = xiezai1;
//ZwCreateFile 创建文件
//ZwOpenFile 打开文件
//ZwSetInformationFile 设置创建的名字 信息大小
//ZwQueryInformationFile查询文件的信息 时间 名字 很多东西
//ZwReadFile 读取文件
//ZwWriteFile 写文件
return STATUS_SUCCESS;
}
最后
以上就是粗暴面包为你收集整理的磁盘文件操作_ZwCreateFile_ZwOpenFile_ZwReadFile_ZwWriteFile_ZwSetInformationFile_ZwQueryInformationFile的全部内容,希望文章能够帮你解决磁盘文件操作_ZwCreateFile_ZwOpenFile_ZwReadFile_ZwWriteFile_ZwSetInformationFile_ZwQueryInformationFile所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复