首页
社区
课程
招聘
[旧帖] [求助]为什么创建的驱动设备连接符号,在应用层无法找到 0.00雪花
发表于: 2011-11-18 15:36 1409

[旧帖] [求助]为什么创建的驱动设备连接符号,在应用层无法找到 0.00雪花

2011-11-18 15:36
1409
【求助】为什么创建的驱动设备连接符号,在应用层无法找到
下面是片段代码
有没有人帮我看看 出什么问题了

//创建设备和连接符
NTSTATUS CreateDevice(PDRIVER_OBJECT driver)
{
        NTSTATUS status;
        PDEVICE_OBJECT pDevObj;
        UNICODE_STRING devName;
        UNICODE_STRING symLinkName;
        RtlInitUnicodeString(&devName,L"\\Device\\haibo_device");

        status=IoCreateDevice(driver,0,&devName,FILE_DEVICE_UNKNOWN,0,TRUE,&pDevObj);
        if(!NT_SUCCESS(status))
        {
                KdPrint(("创建设备haibo_device失败"));
                return status;
        }
        pDevObj->Flags |= DO_BUFFERED_IO;

        RtlInitUnicodeString(&symLinkName,L"\\??\\mylinks");
        status = IoCreateSymbolicLink(&symLinkName,&devName);
        if(!NT_SUCCESS(status))
        {
                KdPrint(("创建设备连接发生错误!"));
                IoDeleteDevice(pDevObj);
                return status;
        }
        KdPrint(("创建设备成功!\r\n"));
        return STATUS_SUCCESS;

}

//下面是应用层的访问

        HANDLE hDevice =  CreateFile(L"\\\\.\\mylinks",GENERIC_READ|GENERIC_WRITE,0,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL);
        if(hDevice == INVALID_HANDLE_VALUE)
        {
                printf("打开设备失败,检查设备连接符是否存在,错误码%d\r\n",GetLastError());
                getchar();
                return -1;
        }

这里找这个连接符返回失败,这是为什么啊

[课程]Android-CTF解题方法汇总!

收藏
免费 0
支持
分享
最新回复 (3)
雪    币: 94
活跃值: (40)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
2
来人,帮帮我这棵小嫩芽吧。。。。
2011-11-18 16:02
0
雪    币: 30
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
不知道你CreateFile返回的的错误码是多少呢?
2011-11-18 20:50
0
雪    币: 130
活跃值: (131)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
4
感觉应该用IoCreateDeviceSecure这个函数,普通用户也能成功打开这设备,还有符号链接的路径应该用\DosDevices\Global\MyCDOSL代替\DosDevices\MyCDOSL,也就是要加这个Global,试试看吧。。。
2011-11-18 22:31
0
游客
登录 | 注册 方可回帖
返回
//