chencheng
驱动小牛
驱动小牛
  • 注册日期2003-06-27
  • 最后登录2007-08-30
  • 粉丝0
  • 关注0
  • 积分28分
  • 威望5点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
阅读:1048回复:5

请问如何在WDM驱动程序中定义一个数组指针指向I.IoctlBuffer?

楼主#
更多 发布于:2004-09-11 10:30

请问如何在WDM驱动程序中定义一个数组指针指向I.IoctlBuffer?
比如  DWORD  a[10]
 …………?

因为好像不能直接给I.IoctlBuffer赋值,
所以我要把我的数组传给I.IoctlBuffer,必须用这个数组的指针指向I.IoctlBuffer?


 
好好学习,天天向上
snowStart
驱动老牛
驱动老牛
  • 注册日期2004-04-06
  • 最后登录2011-06-02
  • 粉丝0
  • 关注0
  • 积分95分
  • 威望19点
  • 贡献值177点
  • 好评度1点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2004-09-11 12:34
建议申请内存:

I.IoctlBuffer= ExAllocatePool(PagedPool,size);或
I.IoctlBuffer= ExAllocatePool(NonPagedPool,size);
学习,关注,交流中... [email=fengyu@163.com]Email:snowstarth@163.com[/email] [url]http://bbs.zndev.com/?a=snowStart[/url]
chencheng
驱动小牛
驱动小牛
  • 注册日期2003-06-27
  • 最后登录2007-08-30
  • 粉丝0
  • 关注0
  • 积分28分
  • 威望5点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2004-09-11 14:52
建议申请内存:

I.IoctlBuffer= ExAllocatePool(PagedPool,size);或
I.IoctlBuffer= ExAllocatePool(NonPagedPool,size);
 


申请内存的函数与我定义的那个数组也挨不上边呀
然后咋办?
好好学习,天天向上
arthurtu
驱动巨牛
驱动巨牛
  • 注册日期2001-11-08
  • 最后登录2020-12-19
  • 粉丝0
  • 关注0
  • 积分26分
  • 威望161点
  • 贡献值0点
  • 好评度35点
  • 原创分0分
  • 专家分0分
  • 社区居民
地板#
发布于:2004-09-11 20:26
真是什么人都敢写驱动呀,都没有什么基础。。。别人告诉你用RtlCopyMemory还是不明白在说什么,那就没有办法了。。。

拿你那个代码来说

在wdm中,:
DWORD SampleAngle[17]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
然后在
NTSTATUS UuuDevice::W32IF_SET_MEASUREMODE_Handler(KIrp I)
{
NTSTATUS status = STATUS_SUCCESS;
..................
.................
// I.IoctlBuffer() = SampleAngle;///这句话有问题吗?
// 问题大了去了,改成
RtlCopyMemory(I.IoctlBuffer, SampleAngle, sizeof(SampleAngle));
// 应该有个地方这样:
I.Information() = sizeof(SampleAngle);
..................
.................

}
chencheng
驱动小牛
驱动小牛
  • 注册日期2003-06-27
  • 最后登录2007-08-30
  • 粉丝0
  • 关注0
  • 积分28分
  • 威望5点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2004-09-11 20:53
真是什么人都敢写驱动呀,都没有什么基础。。。别人告诉你用RtlCopyMemory还是不明白在说什么,那就没有办法了。。。

拿你那个代码来说

在wdm中,:
DWORD SampleAngle[17]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
然后在
NTSTATUS UuuDevice::W32IF_SET_MEASUREMODE_Handler(KIrp I)
{
NTSTATUS status = STATUS_SUCCESS;
..................
.................
// I.IoctlBuffer() = SampleAngle;///这句话有问题吗?
// 问题大了去了,改成
RtlCopyMemory(I.IoctlBuffer, SampleAngle, sizeof(SampleAngle));
// 应该有个地方这样:
I.Information() = sizeof(SampleAngle);
..................
.................

}
 


555555555555555555555555
其实我就是这么改的,但是还是不好使!!
好好学习,天天向上
wowocock
VIP专家组
VIP专家组
  • 注册日期2002-04-08
  • 最后登录2016-01-09
  • 粉丝16
  • 关注2
  • 积分601分
  • 威望1651点
  • 贡献值1点
  • 好评度1227点
  • 原创分1分
  • 专家分0分
5楼#
发布于:2004-09-13 09:00
你的相应部分的汇编代码贴出来看看......嘿嘿......
花开了,然后又会凋零,星星是璀璨的,可那光芒也会消失。在这样 一瞬间,人降生了,笑者,哭着,战斗,伤害,喜悦,悲伤憎恶,爱。一切都只是刹那间的邂逅,而最后都要归入死亡的永眠
游客

返回顶部