文件的写操作

文件的写操作:ZwWriteFile

/*文件的写操作练习*/
#include <ntddk.h>
#include <wdm.h>
NTSTATUS DriverEntry(IN PDRIVER_OBJECT theDriverObject,IN PUNICODE_STRING theRegistyPath)
{
 OBJECT_ATTRIBUTES objectAttributes;
 IO_STATUS_BLOCK iostatus;
 PUCHAR pBuffer;
 LARGE_INTEGER number;
 NTSTATUS ntStatus;
 HANDLE hfile;
 UNICODE_STRING logFileUnicodestring;
 //初始化UNICODE_STRING字符串
 RtlInitUnicodeString(&logFileUnicodestring,L"\\??\\C:\\1.log");
 //或者写成"\\Device\\HarddiskVolume1\\1.LOG"
 //初始化objectAttibutes
 InitializeObjectAttributes(&objectAttributes,&logFileUnicodestring,OBJ_CASE_INSENSITIVE,NULL,NULL);
 //创建文件
 ntStatus=ZwCreateFile(&hfile,GENERIC_WRITE,&objectAttributes,&iostatus,NULL,FILE_ATTRIBUTE_NORMAL,FILE_SHARE_WRITE,FILE_OPEN_IF,FILE_SYNCHRONOUS_IO_NONALERT,NULL,0);
 #define BUFFER_SIZE 1024
    pBuffer=(PUCHAR)ExAllocatePool(PagedPool,BUFFER_SIZE);
 //构造要填充的数据
 RtlFillMemory(pBuffer,BUFFER_SIZE,0XAA);
 KdPrint(("The programe will write %d bytes\n",BUFFER_SIZE));
 //写文件
 ZwWriteFile(hfile,NULL,NULL,NULL,&iostatus,pBuffer,BUFFER_SIZE,NULL,NULL);
 KdPrint(("The programe really wrote %d bytes\n",iostatus.Information));
 //追加数据
 number.QuadPart=1024i64;
 //对文件进行附加写
 ZwWriteFile(hfile,NULL,NULL,NULL,&iostatus,pBuffer,BUFFER_SIZE,&number,NULL);
 KdPrint(("The programe really appended %d bytes\n",iostatus.Information));
 //关闭文件句柄
 ZwClose(hfile);
 ExFreePool(pBuffer);
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值