查询或设置文件的属性

获取或修改文件的属性:ZwSetInformationFile、ZwQueryInformationFile 两个函数的参数大体上相同,
当FileInformationClass设置参数为FileStandardInformation时,输入和输出的数据是FILE_STANDARD_INFORMATION 结构体,描述文件的基本信息。当FileInformationClass是FileBasicInformation时,输入和输出的数据是FILE_BASIC_INFORMATION结构体,描述文件的时间信息。
当FileInformationClass是FileNameInformation时,输入和输出的数据是FILE_NAME_INFORMATION结构体,描述文件名信息。

#include "ntddk.h" #include "wdm.h" NTSTATUS DriverEntry(IN PDRIVER_OBJECT theDriverObject,IN PUNICODE_STRING theRegistryPath) {

 NTSTATUS status=STATUS_SUCCESS;   OBJECT_ATTRIBUTES objectAttributes;  IO_STATUS_BLOCK iostatus;  NTSTATUS ntStatus;  FILE_STANDARD_INFORMATION fsi;  FILE_POSITION_INFORMATION fpi;  HANDLE hfile;  UNICODE_STRING logFileUnicodeString;  //初始化UNICODE_STRING字符串  RtlInitUnicodeString(&logFileUnicodeString,L"\\??\\C:\\1.log");//1.log是全名  //或者写成"\\Device\\HarddiskVolume1\\1.LOG"  //初始化objectAttributes  InitializeObjectAttributes(&objectAttributes,&logFileUnicodeString,OBJ_CASE_INSENSITIVE,NULL,NULL);  //打开文件  ntStatus=ZwCreateFile(&hfile,GENERIC_READ,&objectAttributes,&iostatus,NULL,FILE_ATTRIBUTE_NORMAL,0,FILE_OPEN,FILE_SYNCHRONOUS_IO_NONALERT,NULL,0);  if(NT_SUCCESS(ntStatus))  {   KdPrint(("Open file successfully!\n"));  }else  {   KdPrint(("Open file unsuccessfully!\n"));  }  //读取文件长度  ntStatus=ZwQueryInformationFile(hfile,&iostatus,&fsi,sizeof(FILE_STANDARD_INFORMATION),FileStandardInformation);  if(NT_SUCCESS(ntStatus))  {   KdPrint(("file length:%u\n",fsi.EndOfFile.QuadPart));  }  //修改当前文件指针  fpi.CurrentByteOffset.QuadPart=100i64;  ntStatus=ZwSetInformationFile(hfile,&iostatus,&fpi,sizeof(FILE_POSITION_INFORMATION),FilePositionInformation);  if(NT_SUCCESS(ntStatus))  {   KdPrint(("Update the file pointer successfully.\n"));  }  //关闭文件句柄  ZwClose(hfile);  return status;

}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值