aasa2
驱动中牛
驱动中牛
  • 注册日期2004-04-01
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分525分
  • 威望339点
  • 贡献值0点
  • 好评度106点
  • 原创分0分
  • 专家分0分
阅读:1510回复:15

和驱动通信--添加了代码

楼主#
更多 发布于:2005-01-12 09:59
wsprintf( completeDeviceName, TEXT("\\\\.\\%s"), "Diskperf" );
hDevice = CreateFile( completeDeviceName,
                          GENERIC_READ | GENERIC_WRITE,
                          0,
                          NULL,
                          OPEN_EXISTING,
                          FILE_ATTRIBUTE_NORMAL,
                          NULL
                          );
开始,我在应用层写如上程序,打算和diskperf通信,但是hDevice 返回0xffffff.
请问这是为什么?


[编辑 -  1/12/05 by  aasa2]

[编辑 -  1/13/05 by  aasa2]
技术交流:aasa2@21cn.com QQ群:10863699
aasa2
驱动中牛
驱动中牛
  • 注册日期2004-04-01
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分525分
  • 威望339点
  • 贡献值0点
  • 好评度106点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2005-01-12 10:07
奇怪!diskperf中原来没有IoCreateSymbolicLink驱动为何也能运行?

我在驱动中增加IoCreateSymbolicLink(),结果电脑重启。



[编辑 -  1/12/05 by  aasa2]
技术交流:aasa2@21cn.com QQ群:10863699
fslife
驱动大牛
驱动大牛
  • 注册日期2004-06-07
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分9分
  • 威望49点
  • 贡献值0点
  • 好评度20点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2005-01-12 10:33
hDevice返回是0xffffff,还是0xffffffff?
你看看GetLastError的结果是多少?
在交流中学习。。。
xxcat1220
驱动牛犊
驱动牛犊
  • 注册日期2004-01-19
  • 最后登录2010-12-20
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2005-01-12 10:50
看看有没有这个符号连接
snowStart
驱动老牛
驱动老牛
  • 注册日期2004-04-06
  • 最后登录2011-06-02
  • 粉丝0
  • 关注0
  • 积分95分
  • 威望19点
  • 贡献值177点
  • 好评度1点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2005-01-12 12:48
hDevice返回是0xffffff,还是0xffffffff?
你看看GetLastError的结果是多少?


这样子也可能是有效句柄

#define   INVALID_HANDLE_VALUE    (HANDLE)-1


if(hDevice == INVALID_HANDLE_VALUE    )
{
return ;
}

学习,关注,交流中... [email=fengyu@163.com]Email:snowstarth@163.com[/email] [url]http://bbs.zndev.com/?a=snowStart[/url]
wowocock
VIP专家组
VIP专家组
  • 注册日期2002-04-08
  • 最后登录2016-01-09
  • 粉丝16
  • 关注2
  • 积分601分
  • 威望1651点
  • 贡献值1点
  • 好评度1227点
  • 原创分1分
  • 专家分0分
5楼#
发布于:2005-01-12 12:51
[quote]奇怪!diskperf中原来没有IoCreateSymbolicLink驱动为何也能运行?

我在驱动中增加IoCreateSymbolicLink(),结果电脑重启。



把你的代码贴出来看看
花开了,然后又会凋零,星星是璀璨的,可那光芒也会消失。在这样 一瞬间,人降生了,笑者,哭着,战斗,伤害,喜悦,悲伤憎恶,爱。一切都只是刹那间的邂逅,而最后都要归入死亡的永眠
aasa2
驱动中牛
驱动中牛
  • 注册日期2004-04-01
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分525分
  • 威望339点
  • 贡献值0点
  • 好评度106点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2005-01-12 13:39
to fsfile:
GetLastError()值为2

 
to snowStart:

  我想是无效句柄
  应为我这样做:
wsprintf( completeDeviceName, TEXT("\\.\%s"), "Diskperf1111" );
hDevice = CreateFile( completeDeviceName,.......)
GetLastError()值还是为 2。
to wowocock
我想我添加了IoCreateSymbolicLink()是不对的,或许根本没有必要添加这个函数。

还请大家帮一帮忙,看一下diskperf。我主要想在应用层使用CreateFile()和diskperf通信

[编辑 -  1/12/05 by  aasa2]
技术交流:aasa2@21cn.com QQ群:10863699
fslife
驱动大牛
驱动大牛
  • 注册日期2004-06-07
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分9分
  • 威望49点
  • 贡献值0点
  • 好评度20点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2005-01-12 16:57
你的驱动加载了没有,CreateService没问题吧。
在交流中学习。。。
AllenZh
驱动老牛
驱动老牛
  • 注册日期2001-08-19
  • 最后登录2015-11-27
  • 粉丝19
  • 关注10
  • 积分1316分
  • 威望2387点
  • 贡献值7点
  • 好评度321点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2005-01-12 18:53
Diskperf本身是OS自己就加载了,并且没有符号名称,你当然打不开咯
1,承接Windows下驱动/应用开发 2,本人原创虚拟鼠标/键盘,触摸屏,虚拟显卡,Mirror驱动,XP无盘的SCSI虚拟磁盘驱动等 3,windows下有尝技术服务(包括BUG调试,员工培训等) 欢迎深圳和海外企业联系.msn:mfczmh@sina.com
wowocock
VIP专家组
VIP专家组
  • 注册日期2002-04-08
  • 最后登录2016-01-09
  • 粉丝16
  • 关注2
  • 积分601分
  • 威望1651点
  • 贡献值1点
  • 好评度1227点
  • 原创分1分
  • 专家分0分
9楼#
发布于:2005-01-12 19:59
你自己创建SYMBOLIC LINK因该不会出错吧????
花开了,然后又会凋零,星星是璀璨的,可那光芒也会消失。在这样 一瞬间,人降生了,笑者,哭着,战斗,伤害,喜悦,悲伤憎恶,爱。一切都只是刹那间的邂逅,而最后都要归入死亡的永眠
aasa2
驱动中牛
驱动中牛
  • 注册日期2004-04-01
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分525分
  • 威望339点
  • 贡献值0点
  • 好评度106点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2005-01-13 08:33
我想这段代码用在diskperf上没问题吧?
wowocock请指点一下。
NTSTATUS                ntStatus;
    PDEVICE_OBJECT          guiDevice;
    WCHAR                   deviceNameBuffer[]  = L"\Device\Diskperf";
    UNICODE_STRING          deviceNameUnicodeString;
    WCHAR                   deviceLinkBuffer[]  = L"\DosDevices\Diskperf";
    UNICODE_STRING          deviceLinkUnicodeString;
  

    DbgPrint (("Diskperf.SYS: entering DriverEntryn"));
    RtlInitUnicodeString (&deviceNameUnicodeString,
                          deviceNameBuffer );
ntStatus = IoCreateDevice ( DriverObject,
                                sizeof(DEVICE_EXTENSION),
                                &deviceNameUnicodeString,
                                FILE_DEVICE_DISKPERF,
                                0,
                                TRUE,
                                &guiDevice );

    if(NT_SUCCESS(ntStatus))
{
RtlInitUnicodeString (&deviceLinkUnicodeString,
                              deviceLinkBuffer );
        ntStatus = IoCreateSymbolicLink (&deviceLinkUnicodeString,
                                         &deviceNameUnicodeString );
        if(!NT_SUCCESS(ntStatus))
{
IoDeleteDevice( guiDevice );
            return ntStatus;            
        }
}

[编辑 -  1/13/05 by  aasa2]
技术交流:aasa2@21cn.com QQ群:10863699
wowocock
VIP专家组
VIP专家组
  • 注册日期2002-04-08
  • 最后登录2016-01-09
  • 粉丝16
  • 关注2
  • 积分601分
  • 威望1651点
  • 贡献值1点
  • 好评度1227点
  • 原创分1分
  • 专家分0分
11楼#
发布于:2005-01-13 14:37
你用SOFTICE跟踪下看看是哪条指令出的问题.
花开了,然后又会凋零,星星是璀璨的,可那光芒也会消失。在这样 一瞬间,人降生了,笑者,哭着,战斗,伤害,喜悦,悲伤憎恶,爱。一切都只是刹那间的邂逅,而最后都要归入死亡的永眠
fslife
驱动大牛
驱动大牛
  • 注册日期2004-06-07
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分9分
  • 威望49点
  • 贡献值0点
  • 好评度20点
  • 原创分0分
  • 专家分0分
12楼#
发布于:2005-01-13 15:33
你用SOFTICE跟踪下看看是哪条指令出的问题.

是啊,光看代码很难发现问题,只有调试最管用了。
在交流中学习。。。
aasa2
驱动中牛
驱动中牛
  • 注册日期2004-04-01
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分525分
  • 威望339点
  • 贡献值0点
  • 好评度106点
  • 原创分0分
  • 专家分0分
13楼#
发布于:2005-01-13 19:55
我已经使用其它方法和diskperf通信了。

但是这个问题我会找个时间慢慢解决的,呵呵。

技术交流:aasa2@21cn.com QQ群:10863699
aasa2
驱动中牛
驱动中牛
  • 注册日期2004-04-01
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分525分
  • 威望339点
  • 贡献值0点
  • 好评度106点
  • 原创分0分
  • 专家分0分
14楼#
发布于:2005-01-21 15:15
我用了半天的时间,搞定了应用层和diskperf通信的问题,高兴。等我修改好了,把代码贴出来。
技术交流:aasa2@21cn.com QQ群:10863699
rayyang2000
管理员
管理员
  • 注册日期2001-03-23
  • 最后登录2012-09-13
  • 粉丝3
  • 关注0
  • 积分1036分
  • 威望925点
  • 贡献值3点
  • 好评度823点
  • 原创分0分
  • 专家分0分
15楼#
发布于:2005-01-22 18:29
先搞清楚filter device object和control device object之间的区别再说
天天coding-debugging中----超稀饭memory dump file ======================================================== [b]Windows Device Driver Development and Consulting Service[/b] [color=blue][url]http://www.ybwork.com[/url][/color] ========================================================
游客

返回顶部