shjdriver
驱动牛犊
驱动牛犊
  • 注册日期2003-04-01
  • 最后登录2008-04-02
  • 粉丝0
  • 关注0
  • 积分277分
  • 威望30点
  • 贡献值0点
  • 好评度26点
  • 原创分0分
  • 专家分0分
阅读:977回复:7

上层与驱动程序通讯

楼主#
更多 发布于:2003-05-01 09:00
我是编写一用于通过上层应用程序DeviceIoControl(。。),将上层一缓冲区的内容传给下层。一直没有成功,请给我一示例,将不胜感激。


 
fuq_dddd
驱动老牛
驱动老牛
  • 注册日期2002-10-15
  • 最后登录2009-10-09
  • 粉丝0
  • 关注0
  • 积分331分
  • 威望57点
  • 贡献值0点
  • 好评度28点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2003-05-01 10:26
在ddk里面随便找一个例子就有
星星之火 可以燎原 每一个光亮 都可能是黎明 [img]http://joke.tom.com/img/assets/1/gaoxiao_80_910.gif[/img]
shjdriver
驱动牛犊
驱动牛犊
  • 注册日期2003-04-01
  • 最后登录2008-04-02
  • 粉丝0
  • 关注0
  • 积分277分
  • 威望30点
  • 贡献值0点
  • 好评度26点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2003-05-02 09:06
我按照ds中的例子作了一个测试程序,但还是死机。请帮忙指点。我已经苦了数天了。
程序的主要目的是,将上层的缓冲区中的内容传给驱动程序。
NTSTATUS DACSHJ1Device::DeviceControl(KIrp I)
{
NTSTATUS status;
PVOID ioBuffer  = I.IoctlBuffer();
ULONG ioInSize  = I.IoctlInputBufferSize();
ULONG ioOutSize = I.IoctlOutputBufferSize();
    I.Information() = 0;
    t << \"Entering DACSHJ1Device::Device Control, \" << I << EOL;
switch (I.IoctlCode())
{
case 0x00033://测试语句
{
short int* pRead = (short int*)ioBuffer;
if(*pRead==5)//测试是否是上层传下来的数据/////但死机
{
t <<\"test ok\" << EOL;
}
status=1;
}
break;

default://缺省情况下
// Unrecognized IOCTL request
status = DACSHJ1_IOCTL_800_Handler(I);
break;
//status = STATUS_INVALID_PARAMETER;
//break;
}
。。。
}

上层程序为:
short int Sinput;
Sinput=5;
DeviceIoControl(hHello,0x00033,&Sinput, sizeof(Sinput),bufOutput,sizeof(bufOutput),&nOutput, NULL);
zydcat
驱动老牛
驱动老牛
  • 注册日期2001-12-06
  • 最后登录2006-04-12
  • 粉丝0
  • 关注0
  • 积分9分
  • 威望2点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2003-05-02 10:52
怎么直接是0x00033,为什么不定义ioctrl码,这样系统不知道你的数据缓冲区访问方式,估计是这里的问题 :D
[color=red]肥虫虫[/color] [img]http://www.driverdevelop.com/forum/upload/bradley/2002-11-15_ig01.gif[/img]
arthurtu
驱动巨牛
驱动巨牛
  • 注册日期2001-11-08
  • 最后登录2020-12-19
  • 粉丝0
  • 关注0
  • 积分26分
  • 威望161点
  • 贡献值0点
  • 好评度35点
  • 原创分0分
  • 专家分0分
  • 社区居民
地下室#
发布于:2003-05-02 11:05
怎么直接是0x00033,为什么不定义ioctrl码,这样系统不知道你的数据缓冲区访问方式,估计是这里的问题 :D

nod
zydcat
驱动老牛
驱动老牛
  • 注册日期2001-12-06
  • 最后登录2006-04-12
  • 粉丝0
  • 关注0
  • 积分9分
  • 威望2点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2003-05-02 11:36
[quote]怎么直接是0x00033,为什么不定义ioctrl码,这样系统不知道你的数据缓冲区访问方式,估计是这里的问题 :D

nod [/quote]
蹭分? :D
[color=red]肥虫虫[/color] [img]http://www.driverdevelop.com/forum/upload/bradley/2002-11-15_ig01.gif[/img]
arthurtu
驱动巨牛
驱动巨牛
  • 注册日期2001-11-08
  • 最后登录2020-12-19
  • 粉丝0
  • 关注0
  • 积分26分
  • 威望161点
  • 贡献值0点
  • 好评度35点
  • 原创分0分
  • 专家分0分
  • 社区居民
6楼#
发布于:2003-05-02 11:43
被发现了。
shjdriver
驱动牛犊
驱动牛犊
  • 注册日期2003-04-01
  • 最后登录2008-04-02
  • 粉丝0
  • 关注0
  • 积分277分
  • 威望30点
  • 贡献值0点
  • 好评度26点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2003-05-02 15:58
十分感谢您对我的帮助,问题正如您所说,得到解决。以后还要麻烦您。再见。
游客

返回顶部