2732|5

82

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

NdisMoveMemory出现蓝屏。。 [复制链接]

这是驱动层的代码

  1. NTSTATUS    DevIoCtrl(PDEVICE_OBJECT dev, PIRP irp )
  2. {
  3.     PIO_STACK_LOCATION  irpStack;
  4.     NTSTATUS            status = STATUS_SUCCESS;
  5.     ULONG               inputBufferLength;
  6.     ULONG               outputBufferLength;
  7.     ULONG               ioControlCode;
  8.     PUCHAR                buffer;
  9.     Log                    log1;             //我自定义的结构体
  10.     UNREFERENCED_PARAMETER(dev);

  11.     irpStack = IoGetCurrentIrpStackLocation(irp);
  12.     inputBufferLength = irpStack->Parameters.DeviceIoControl.InputBufferLength;
  13.     outputBufferLength = irpStack->Parameters.DeviceIoControl.OutputBufferLength;
  14.     buffer    =    irp->AssociatedIrp.SystemBuffer;
  15.     ioControlCode = irpStack->Parameters.DeviceIoControl.IoControlCode;
  16.     switch(ioControlCode)
  17.     {
  18.     case IOCTRL_READ_DATA:
  19.         if(outputBufferLength    ==    sizeof(Log))
  20.         {
  21.             log1.a          =         4;
  22.             log1.b     =    123456;
  23.             log1.c    =    456;
  24.             log1.d    =    789;
  25.                                            }
  26.                      NdisMoveMemory(buffer,&log1,sizeof(Log));                         //这句导致蓝屏
  27.                      break;
  28.     }
  29.     irp->IoStatus.Status = status;
  30.     IoCompleteRequest(irp, IO_NO_INCREMENT);
  31.     return status;
  32. }

复制代码

这是用户层的代码


  1. Log  log;
  2. ULONG len,len1;
  3. len = sizeof(Log);
  4. DeviceIoControl(Handle,IOCTRL_READ_DATA,NULL,0,&log,len,&len1,NULL);
复制代码


刚开始学驱动。。找不到是什么问题 。。哪位大大帮帮我吧。。3Q了、、

最新回复

没看懂啊。。。。。。。。。。。。。。。 不是括号没打对的问题吧 我也遇到了同样的问题,哪位大哥给解释下咯???3Qvery much!  详情 回复 发表于 2009-3-3 17:27
点赞 关注

回复
举报

62

帖子

0

TA的资源

一粒金砂(初级)

沙发
 

  1. switch(ioControlCode)
  2.     {
  3.     case IOCTRL_READ_DATA:
  4.         if(outputBufferLength    ==    sizeof(Log))
  5.         {
  6.             log1.a          =         4;
  7.             log1.b     =    123456;
  8.             log1.c    =    456;
  9.             log1.d    =    789;
  10.                                 
  11.             NdisMoveMemory(buffer,&log1,sizeof(Log));                         //这句导致蓝屏
  12.               break;
  13.         }
  14.     }

复制代码


上面的那括号括错地方了。。汗。。
 
 

回复

74

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
人工置顶。。。帮帮忙吧。。先谢过啦。。
 
 
 

回复

76

帖子

0

TA的资源

一粒金砂(初级)

4
 
问题己解决。。。要分的冒下泡吧。。
 
 
 

回复

75

帖子

0

TA的资源

一粒金砂(初级)

5
 
不懂,up
 
 
 

回复

76

帖子

0

TA的资源

一粒金砂(初级)

6
 
没看懂啊。。。。。。。。。。。。。。。
不是括号没打对的问题吧
我也遇到了同样的问题,哪位大哥给解释下咯???3Qvery much!
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/8 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表