dionysus77
驱动小牛
驱动小牛
  • 注册日期2006-11-15
  • 最后登录2011-12-18
  • 粉丝0
  • 关注0
  • 积分27分
  • 威望392点
  • 贡献值0点
  • 好评度177点
  • 原创分0分
  • 专家分0分
阅读:964回复:2

Zwxxx删除文件尾的代码(哪里错了?)

楼主#
更多 发布于:2007-04-28 11:11
  我用下面函数删除文件最后512字节,但是调试发现读到StandardInfo中的数据并非文件长度等信息,而是文件尾部内容,请帮我看看代码哪里有错?

NTSTATUS
deleteass(
    IN PCWSTR FileName
    )
{  
    OBJECT_ATTRIBUTES ObjectAttributes;
    UNICODE_STRING ObjectName;
    HANDLE FileHandle;
    IO_STATUS_BLOCK IoStatus;
    NTSTATUS Status;
    FILE_STANDARD_INFORMATION StandardInfo;
    FILE_END_OF_FILE_INFORMATION FileEnd;


 
    RtlInitUnicodeString(&ObjectName,FileName);
    InitializeObjectAttributes(
        &ObjectAttributes,
        &ObjectName,
        OBJ_KERNEL_HANDLE,
        NULL,
        NULL
        );
    IoStatus.Status = STATUS_SUCCESS;
    IoStatus.Information = 0;
    Status=ZwOpenFile(
        &FileHandle,
        GENERIC_WRITE | GENERIC_READ | SYNCHRONIZE,
        &ObjectAttributes,
        &IoStatus,
        0,
        FILE_WRITE_THROUGH | FILE_SYNCHRONOUS_IO_NONALERT
        );
    
    //if(NT_SUCCESS(Status))
    {
        IoStatus.Status = STATUS_SUCCESS;
        IoStatus.Information = 0;
        Status=ZwQueryInformationFile(
            FileHandle,
            &IoStatus,
            &StandardInfo,
            sizeof(FILE_STANDARD_INFORMATION),
            FileStandardInformation
            );
    }
    //if(NT_SUCCESS(Status))
    {
        IoStatus.Status = STATUS_SUCCESS;
        IoStatus.Information = 0;
        FileEnd.EndOfFile = StandardInfo.EndOfFile;
        FileEnd.EndOfFile.QuadPart -= 512;
        Status=ZwSetInformationFile(
            FileHandle,
            &IoStatus,
            &FileEnd,
            sizeof(FILE_END_OF_FILE_INFORMATION),
            FileEndOfFileInformation
        );
    }
    ZwClose(FileHandle);
    return Status;
}
devia
论坛版主
论坛版主
  • 注册日期2005-05-14
  • 最后登录2016-04-05
  • 粉丝3
  • 关注0
  • 积分1029分
  • 威望712点
  • 贡献值1点
  • 好评度555点
  • 原创分8分
  • 专家分4分
沙发#
发布于:2007-04-28 13:09
太麻烦,何不直接使用FCB中的FILESIZE信息?
人总在矛盾中徘徊。。。
dionysus77
驱动小牛
驱动小牛
  • 注册日期2006-11-15
  • 最后登录2011-12-18
  • 粉丝0
  • 关注0
  • 积分27分
  • 威望392点
  • 贡献值0点
  • 好评度177点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2007-04-28 19:39
是不是只需要修改fcb的filesize就可以完全实现去除文件尾呢?
游客

返回顶部