浅谈 “驱动中的文件操作”
来源:互联网 发布:socket 编程实例 编辑:程序博客网 时间:2024/06/15 04:50
对于文件操作:
我们的步骤应该是
1:---------------打开我们指定的文件(大部分是通过文件名的得到这个文件的操作句柄),可以使用 ZwOpenFile, ZwCreateFile....
当然,创建只能用第二个。。。
这是一个打开已知文件的例子:
NTSTATUS status;
OBJECT_ATTRIBUTES oa;
IO_STATUS_BLOCK iostatus;
HANDLE hfile; // the output from this process
PUNICODE_STRING pathname; // you've been given this
InitializeObjectAttributes(&oa, pathname, OBJ_CASE_INSENSITIVE, NULL, NULL);
status = ZwCreateFile(&hfile,
GENERIC_READ,
&oa,
&iostatus,
NULL,
0,
FILE_SHARE_READ,
FILE_OPEN,
FILE_SYNCHRONOUS_IO_NONALERT,
NULL,
0);
创建或重写文件
为了创建一个新文件,或打开一个已存在文件并截为 0 长度,用下面方式调用 ZwCreateFile 函数:
status = ZwCreateFile(&hfile,
GENERIC_WRITE,
&oa,
&iostatus,
NULL,
FILE_ATTRIBUTE_NORMAL,
0,
FILE_OVERWRITE_IF,
FILE_SYNCHRONOUS_IO_NONALERT,
NULL,
0);
2:---------------拿到我们想要的文件句柄后,我们将要对这个文件进行处理了,read 还是 write ,wdk 给我们提供了ZwReadFile 和
ZwWriteFile 这两个函数
读写的例子:
PVOID buffer;
ULONG bufsize;
status = ZwReadFile(hfile, NULL, NULL, NULL, &iostatus, buffer, bufsize, NULL, NULL);
status = ZwWriteFile(hfile, NULL, NULL, NULL, &iostatus, buffer, bufsize, NULL, NULL);
3:如果要对整个文件的内容进行读取:
那么我们应该首先知道这个文件的大小,然后在指定要读取这个文件的大小。。。
获取整个文件的大小:
FILE_STANDARD_INFORMATION si;
ZwQueryInformationFile(hfile, &iostatus, &si, sizeof(si), FileStandardInformation);
ULONG length = si.EndOfFile.LowPart;
4:当操作完后,我们应该关闭文件的句柄,不然,下次不能对这个文件进行其他的操作了。。。
- 浅谈 “驱动中的文件操作”
- 浅谈 “驱动中的文件操作”
- 浅谈C语言中的文件操作(一)
- C++文件操作浅谈
- 浅谈Linux文件操作
- 浅谈一下驱动开发中的硬编码
- 浅谈linux内核中的I2c驱动(1)
- 浅谈linux内核中的I2c驱动(2)
- 索引文件中的格式浅谈!
- 浅谈JAVA中的日志文件
- 浅谈JAVA中的日志文件
- 浅谈JAVA中的日志文件
- 浅谈JAVA中的日志文件
- 浅谈使用Eclipse和Tomcat开发项目过程中的文件操作
- 驱动开发中的常用操作
- 文件操作(驱动接口)
- 内核驱动的文件操作
- 驱动开发学习----文件操作
- Python 摸索(一) class的初步学习
- 虚拟化技术应用现状
- 驱动中获取进程完整路径名
- WebBrowser组件和MSHTML 在Delphi中的使用
- java与c/c++进行socket通信的一些问题(1)-JSP教程,Java技巧及代码
- 浅谈 “驱动中的文件操作”
- PCB板设计的简明规则
- 七夕,染红了我的相思
- matlab数据类型
- ArrayList类的代理,其内部实现和ArrayList中完全相同的功能并计算每个方法运行时间。
- Java基础教程 02
- JAVA生成随机汉字
- hdu 1059 Dividing (多重背包)
- 异步非阻塞套接字Winsock开发网络通信程序的经典入门