liangyufei
驱动小牛
驱动小牛
  • 注册日期2006-01-16
  • 最后登录2021-10-12
  • 粉丝0
  • 关注0
  • 积分1019分
  • 威望588点
  • 贡献值2点
  • 好评度95点
  • 原创分0分
  • 专家分0分
  • 社区居民
阅读:1600回复:3

请问如何在驱动中得到硬盘的MBR

楼主#
更多 发布于:2009-01-08 16:16
各位老大,我想在我的驱动中直接读写硬盘扇区得MBR,但发现使用ZwCreateFile时出错,返回值STATUS_OBJECT_TYPE_MISMATCH,请教各位大虾是何原因导致,如何修改。
具体代码如下:
        NTSTATUS status;
    OBJECT_ATTRIBUTES oa;
    UNICODE_STRING usname;
    IO_STATUS_BLOCK iostatus;
    WCHAR            wcFileName[MAX_PATH];
    
    HANDLE hFile;
    IO_STATUS_BLOCK    IOSB;
    LARGE_INTEGER    liOffset;
    

    memset(wcFileName,0,sizeof(wcFileName));
    swprintf(wcFileName,L"\\Device\\Harddisk0");
    
    RtlInitUnicodeString(&usname, wcFileName);    
    InitializeObjectAttributes(&oa, &usname, OBJ_CASE_INSENSITIVE|OBJ_KERNEL_HANDLE , NULL, NULL);
    
    status = ZwCreateFile(&hFile,
        GENERIC_READ|GENERIC_WRITE,
        &oa,
        &iostatus,
        NULL,
        FILE_ATTRIBUTE_NORMAL,
        FILE_SHARE_WRITE|FILE_SHARE_READ,
        FILE_OPEN,
        FILE_SYNCHRONOUS_IO_NONALERT|FILE_NO_INTERMEDIATE_BUFFERING,
        NULL,
        0);
    
    if(!NT_SUCCESS(status))
    {
        STATUS_INVALID_PARAMETER
        DbgPrint("\n ZwCreateFile=%d,iostatus=%d",status,iostatus.Information);
        return FALSE;
    }
    
    
    liOffset.QuadPart = 0;
    
    status = ZwReadFile(
        hFile,
        NULL,
        NULL,
        NULL,
        &IOSB,
        pMbr,
        1*SECTOR_SIZE,
        &liOffset,
        NULL
        );
    if(!NT_SUCCESS(status))
    {
        //STATUS_INVALID_PARAMETER
        DbgPrint("\n ZwReadFile=%d,iostatus=%d",status,iostatus.Information);
        ZwClose(hFile);
        return FALSE;
    }
    return TRUE;
generalos
驱动牛犊
驱动牛犊
  • 注册日期2008-10-23
  • 最后登录2011-04-20
  • 粉丝0
  • 关注0
  • 积分63分
  • 威望477点
  • 贡献值1点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2009-01-10 20:23
IoReadPartitionTable
驱网无线,快乐无限
generalos
驱动牛犊
驱动牛犊
  • 注册日期2008-10-23
  • 最后登录2011-04-20
  • 粉丝0
  • 关注0
  • 积分63分
  • 威望477点
  • 贡献值1点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2009-01-10 20:26
读扇区当然也没问题,不过符号连接好像不是Harddisk0 而是PhysicalDrive0 如果我没记错的话。
驱网无线,快乐无限
WQXNETQIQI
驱动大牛
驱动大牛
  • 注册日期2006-06-12
  • 最后登录2010-10-26
  • 粉丝0
  • 关注0
  • 积分13分
  • 威望1076点
  • 贡献值0点
  • 好评度895点
  • 原创分1分
  • 专家分0分
地板#
发布于:2009-01-15 14:34
DR0
驱动开发者 呵呵
游客

返回顶部