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

请教我的打开磁盘的代码错在哪里(含源代码)

楼主#
更多 发布于:2008-11-11 11:27
各位老大,我想在我的驱动中直接读写硬盘扇区,但发现使用ZwCreateFile时出错,返回值STATUS_OBJECT_NAME_INVALID,请教各位大虾是何原因导致,如何修改。
具体代码如下:
    NTSTATUS status;
    OBJECT_ATTRIBUTES oa;
    UNICODE_STRING usname;
    IO_STATUS_BLOCK iostatus;
    WCHAR    wcFileName[260];
    
    HANDLE    hCacheFile  = NULL;
    
    memset(wcFileName,0,sizeof(wcFileName));
    swprintf(wcFileName,L"\\\\.\\PhysicalDrive0");
    
    RtlInitUnicodeString(&usname, wcFileName);    
    InitializeObjectAttributes(&oa, &usname, OBJ_CASE_INSENSITIVE|OBJ_KERNEL_HANDLE , NULL, NULL);
    
    status = ZwCreateFile(&hCacheFile,
        GENERIC_ALL,
        &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))
    {
        DbgPrint("\n ZwCreateFile=%x",status);
        return;
    }
    ZwClose(hCacheFile);
WQXNETQIQI
驱动大牛
驱动大牛
  • 注册日期2006-06-12
  • 最后登录2010-10-26
  • 粉丝0
  • 关注0
  • 积分13分
  • 威望1076点
  • 贡献值0点
  • 好评度895点
  • 原创分1分
  • 专家分0分
沙发#
发布于:2008-11-11 13:20
使用\Device\Harddisk0\DR0
驱动开发者 呵呵
wowocock
VIP专家组
VIP专家组
  • 注册日期2002-04-08
  • 最后登录2016-01-09
  • 粉丝16
  • 关注2
  • 积分601分
  • 威望1651点
  • 贡献值1点
  • 好评度1227点
  • 原创分1分
  • 专家分0分
板凳#
发布于:2008-11-11 17:10
\Device\Harddisk0\DR0 or \??\PhysicalDrive0
请不要用应用层的打开方式.
花开了,然后又会凋零,星星是璀璨的,可那光芒也会消失。在这样 一瞬间,人降生了,笑者,哭着,战斗,伤害,喜悦,悲伤憎恶,爱。一切都只是刹那间的邂逅,而最后都要归入死亡的永眠
liangyufei
驱动小牛
驱动小牛
  • 注册日期2006-01-16
  • 最后登录2021-10-12
  • 粉丝0
  • 关注0
  • 积分1019分
  • 威望588点
  • 贡献值2点
  • 好评度95点
  • 原创分0分
  • 专家分0分
  • 社区居民
地板#
发布于:2008-11-17 14:30
用了楼上的方法,问题已经解决。谢谢二位大牛。
游客

返回顶部