一梦醉千年 发表于 2012-05-17 21:05

文件读取问题

我在用passthru的架构做一个简单的防火墙
现在把规则写在程序里可以过滤,但是我想要从一个文件中读取规则,这样要修改规则就直接修改文件内容,
但我把我写的文件操作函数一加进程序中系统就蓝屏了(我用的是xp)
我写的文件操作函数如下:
void Readruls()
{
   HANDLE file_handle = NULL;                  //定义文件句柄
   IO_STATUS_BLOCK io_status = {0}, r_status = {0};//状态
   PVOID buffer = ExAllocatePool(NonPagedPool, 256);//为buffer分配内存空间
   LARGE_INTEGER offset = {0};
   
   NTSTATUS status_c, status_r;
   OBJECT_ATTRIBUTES object_attributes;         //初始化含有文件路径的object_attributes
   UNICODE_STRING ufile_name;         
   RtlInitUnicodeString(&ufile_name, L"\\??\\C:\\1.txt");
   InitializeObjectAttributes(
      &object_attributes,
                &ufile_name,
                OBJ_CASE_INSENSITIVE|OBJ_KERNEL_HANDLE,
                NULL,
                NULL,);
       
        status_c = ZwCreateFile(                     //打开该文件
             &file_handle,
               GENERIC_READ,
               &object_attributes,
               &io_status,
               NULL,
               FILE_ATTRIBUTE_NORMAL,
               FILE_SHARE_READ,
               FILE_OPEN_IF,
               FILE_NON_DIRECTORY_FILE|
               FILE_RANDOM_ACCESS|
               FILE_SYNCHRONOUS_IO_NONALERT,
               NULL,
               0);
        status_r = ZwReadFile(                  //读取文件内容
      file_handle,
      NULL,
                NULL,
                NULL,
                &r_status,
                buffer,
                128,
                &offset,
                NULL);
        ZwClose(file_handle);                  //关闭文件
    Readtxt(buffer);                         //调用函数分析获得的规则
        ExFreePool(buffer);                      //释放内存
   
}
蓝屏信息是:STOP:0x00000005(0x865B7660,0x8602ADA0,0x00000000,0xF7A1CFE8)
页: [1]
查看完整版本: 文件读取问题