首页
社区
课程
招聘
[己解决]问个傻傻的问题...怎么用ZwCreateFile打开一个逻辑磁盘
发表于: 2010-5-30 12:03 5505

[己解决]问个傻傻的问题...怎么用ZwCreateFile打开一个逻辑磁盘

2010-5-30 12:03
5505
我还是直接上代码吧

HANDLE OpenDisk(CHAR lpszDiskName)
{
        NTSTATUS ntStatus;
        IO_STATUS_BLOCK iostatus;
        OBJECT_ATTRIBUTES objectAttributes;
        UNICODE_STRING DiskUnicodeString;
    HANDLE hfile;
        ANSI_STRING DiskNameString;

        _asm int 3
    switch(lpszDiskName)
        {
        case 'C':
        //        RtlInitUnicodeString(&DiskUnicodeString, L"\\??\\PHYSICALDRIVE0"); 此处打开成功,可惜是个物理磁盘
           //        RtlInitUnicodeString(&DiskUnicodeString, L"\\??\\C:\\");打开成功,可惜好像是个目录
                RtlInitUnicodeString(&DiskUnicodeString, L"\\??\\C:"); 打开失败
     //   RtlInitUnicodeString(&DiskUnicodeString, L"\\Device\\HarddiskVolume1"); 打开失败
                break;       
        }
       
    //初始化objectAttributes
        InitializeObjectAttributes(&objectAttributes,
                                      &DiskUnicodeString,
                                                          OBJ_CASE_INSENSITIVE,//对大小写敏感
                                                          NULL,
                                                          NULL);
        //打开文件
        _asm int 3
        ntStatus = ZwCreateFile(&hfile,
                                    GENERIC_READ|GENERIC_WRITE,
                                                        &objectAttributes,
                                                        &iostatus,
                                                        NULL,
                                                        FILE_ATTRIBUTE_NORMAL,
                                                        FILE_SHARE_READ,
                                                        FILE_OPEN,  //打开文件,如果不存在,则返回错误
                                                        FILE_SYNCHRONOUS_IO_NONALERT,
                                                        NULL,
                                                        0);
        if (NT_SUCCESS(ntStatus))
        {
                KdPrint(("Open file successfully.\n"));
        //        ZwClose(hfile);
            return hfile;
        }
        else
        {
        KdPrint(("Open failed.\n"));
            return NULL;
        }
   
    return NULL;
}

有哪位大侠知道的请指教下

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
支持
分享
最新回复 (1)
雪    币: 173
活跃值: (132)
能力值: ( LV7,RANK:100 )
在线值:
发帖
回帖
粉丝
2
自己解决了
        ntStatus = ZwCreateFile(&hfile,
                                    FILE_READ_ATTRIBUTES,
                                                        &objectAttributes,
                                                        &iostatus,
                                                        NULL,
                                                        FILE_ATTRIBUTE_NORMAL,
                                                        FILE_SHARE_READ,
                                                        FILE_OPEN,  //打开文件,如果不存在,则返回错误
                                                        FILE_SYNCHRONOUS_IO_NONALERT,
                                                        NULL,
                                                        0);
2010-5-30 14:27
0
游客
登录 | 注册 方可回帖
返回
//