首页
社区
课程
招聘
[旧帖] [求助]关于设备打开总是失败问题~ 0.00雪花
发表于: 2011-5-13 16:53 1386

[旧帖] [求助]关于设备打开总是失败问题~ 0.00雪花

2011-5-13 16:53
1386
我是用CreateFile来打开一个设备~,在MSDN上打开Communication Device设备必须设置第五个参数为OPEN_EXISTING和最后一个参数为NULL,
对filename这个参数设备的话是一个符号链接名吧,而且是一个空结尾字符串?
但是通过getlasterror得到错误号是2也就是找不到指定文件,也就是filename有问题吧?我不知道我下面的这个用字符组来写错在了哪~~(当然设备和符号链接都已经生成应该是没什么问题了。)

#include "stdafx.h"
#include <string.h>
#include <Windows.h>

int _tmain(int argc, _TCHAR* argv[])
{
    HANDLE devicehdle;
    char dlinkname[11]=“\\\\.\\A_safe”;
    devicehdle=CreateFile((LPCTSTR)dlinkname,
        GENERIC_READ|GENERIC_WRITE,0,0,
        OPEN_EXISTING,FILE_ATTRIBUTE_SYSTEM,0);
    if(devicehdle==INVALID_HANDLE_VALUE)
    {
        printf("the device open fail!!");
    }else{
        printf("the device open ok !!");
    }
    CloseHandle(devicehdle);
    return 0;
}

[培训]《安卓高级研修班(网课)》月薪三万计划,掌握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法

收藏
免费 0
支持
分享
最新回复 (9)
雪    币: 1689
活跃值: (379)
能力值: ( LV15,RANK:440 )
在线值:
发帖
回帖
粉丝
2
首先看下驱动是否已经正常加载(用devicetree),如果确定该驱动已经被加载,则很有可能是UAC导致的问题。试下以管理员权限运行程序。
2011-5-13 16:59
0
雪    币: 29
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
之前不是有人发过一个提权的代码么?
2011-5-13 17:05
0
雪    币: 3
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
是这样的我用的是administration的权限,然后用的是net start 加载的设备驱动  用winobj已经可以查看到了设备名称和符号链接了,但是任然不行额~
2011-5-13 17:27
0
雪    币: 3
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
不知道你说的意思啊??难道是需要更高的system 权限来运行吗??
2011-5-13 17:29
0
雪    币: 1689
活跃值: (379)
能力值: ( LV15,RANK:440 )
在线值:
发帖
回帖
粉丝
6
系统默认不以管理员权限执行程序,即使管理员登录了。仍然怀疑UAC。
2011-5-13 17:35
0
雪    币: 3
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
我用了管理员登入,那在XP下控制台程序要怎么用管理员运行啊~~(是右键下把运行方式然后把那个什么保护什么的钩子去掉?但是程序一闪而过快的更本就看不到什么情况啊~)~~大哥帮个忙呀~~
2011-5-13 17:56
0
雪    币: 1689
活跃值: (379)
能力值: ( LV15,RANK:440 )
在线值:
发帖
回帖
粉丝
8
哦,不好意思。没有问你系统版本。XP没有“以管理员权限运行”的选项。vista以上版本有。运行方法是在开始菜单里找到命令提示符那个快捷方式,右键菜单“以管理员权限”运行执行。这样控制台就可以以管理员权限运行了。

XP没有这情况。总是失败不知道是不是受到安全软件的影响了。你不妨用虚拟机试试。不安装安全软件。

代码好像有些问题。那个字符串不是char*类型的。应该是TCHAR *的。如果用UNICODE字符集编译,你那样写自然出问题了。TCHAR在两种字符集编译情况下都适用的。包含头文件tchar.h

TCHAR dlinkname[11]=_T(“\\\\.\\A_safe”);
2011-5-13 18:15
0
雪    币: 3
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
终于看到ok 了
用了你那个字符组就OK了,我不明白为什么要这么改啊,TCHAR可以用于ANSI 和UNICODE两种字符集?那char cstring 之类的数据类型用于什么方面的啊??
2011-5-13 18:50
0
雪    币: 1689
活跃值: (379)
能力值: ( LV15,RANK:440 )
在线值:
发帖
回帖
粉丝
10
建议阅读win32程序设计开始部分关于字符集的说明。我不再详述了。好好学习。一起进步。
2011-5-13 18:56
0
游客
登录 | 注册 方可回帖
返回
//