首页
社区
课程
招聘
[旧帖] [求助]搞了12小时 还是打不开设备 求指点 0.00雪花
发表于: 2011-2-14 04:11 1096

[旧帖] [求助]搞了12小时 还是打不开设备 求指点 0.00雪花

2011-2-14 04:11
1096
//定义一个函数用于打开驱动已成功创建的设备
void OpenDriverHandle()
{
        HANDLE hDevice;
        hDevice=CreateFile(L"\\\\.\\MyDeviceLinkName",
                        GENERIC_READ | GENERIC_WRITE,
                        0,
                        NULL,
                        OPEN_EXISTING,
                        FILE_ATTRIBUTE_NORMAL,
                        NULL);
        if (hDevice==INVALID_HANDLE_VALUE)
        {
                TRACE("GetLastError  错误码:%d\n",GetLastError());
                CloseHandle(hDevice);
        }
                //干别的事情```
}

//以下是驱动里创建设备的代码
NTSTATUS CreateDevice(IN PDRIVER_OBJECT driver)
{
        NTSTATUS status;
        UNICODE_STRING devName;
        RtlInitUnicodeString(&devName,L"\\Device\\MyDDK_Device");
        PDEVICE_OBJECT pDevObj;
        status=IoCreateDevice(driver,0,&devName,FILE_DEVICE_UNKNOWN,0,true,&pDevObj);
        if (!NT_SUCCESS(status))
        {
                KdPrint(("设备创建失败"));
                return status;
        }
       
        //设置设备为缓冲模式
        pDevObj->Flags |= DO_BUFFERED_IO;
        KdPrint(("设备创建成功"));

        UNICODE_STRING symLinkName;
        RtlInitUnicodeString(&symLinkName,L"\\??\\MyDeviceLinkName");
        status=IoCreateSymbolicLink(&symLinkName,&devName);

        if (!NT_SUCCESS(status))
        {
                IoDeleteDevice(pDevObj);
                return status;
        }
        KdPrint(("创建符号连接成功"));
        return STATUS_SUCCESS;
}

求解为何打不开设备?  
CreateFile()返回INVALID_HANDLE_VALUE
而GetLastError()返回 1
查了下百度  GetLastError()返回1代表功能错误``啥意思
明天再看了``

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 0
支持
分享
最新回复 (2)
雪    币: 228
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
pak
2
你在driver中处理IRP_MJ_CREATE和IRP_MJ_CLOSE了没 ?
2011-2-14 09:04
0
雪    币: 53
活跃值: (32)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
感谢楼上的大哥,的确是忘了设置IRP_MJ_CREATE 的回调`
2011-2-14 14:09
0
游客
登录 | 注册 方可回帖
返回
//