downloadw
驱动牛犊
驱动牛犊
  • 注册日期2003-06-30
  • 最后登录2016-01-07
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1929回复:6

问源码里几个函数的作用

楼主#
更多 发布于:2003-08-18 21:19
我来发分!

1.RtlMoveMomery函数执行了什么?
    pIrpStack = IoGetCurrentIrpStackLocation( Irp );
    pNextIrpSp = IoGetNextIrpStackLocation( Irp );
    RtlMoveMemory( pNextIrpSp, pIrpStack, sizeof( IO_STACK_LOCATION ) );

2.IoSetCompletionRoutine函数第二个参数为NULL是什么意思啊?
    IoSetCompletionRoutine( Irp, NULL, NULL, FALSE, FALSE, FALSE );

3.Ex***SpinLock这几个函数是做什么的?
    ExAcquireSpinLock( &gControlDeviceStateLock, &oldIrql );
    ……
    ExReleaseSpinLock( &gControlDeviceStateLock, oldIrql );
wwjmaomao
驱动牛犊
驱动牛犊
  • 注册日期2003-07-07
  • 最后登录2004-06-07
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2003-08-18 22:21
1,相当于复制的意思,把当前的IO栈单元复制一份到下一个栈单元
2:第二个参数是完成例程的入口地址,是个函数指针
3:这几个函数是子旋锁函数,是用来同步的,使操作串行话,谁持有它, 谁就有权对内存段执行预定的操作。
downloadw
驱动牛犊
驱动牛犊
  • 注册日期2003-06-30
  • 最后登录2016-01-07
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2003-08-19 09:18
还是你好啊,肯教我

1.我查了MSDN,大概也看明白这是一个复制操作,我不明白它这样的目的,那不是栈里有两个重复的?是不是复制一份传给自己建的这个设备?

2.如果函数是NULL,那是不是说没有完成例程?
nustzhua
驱动中牛
驱动中牛
  • 注册日期2002-06-19
  • 最后登录2015-09-27
  • 粉丝0
  • 关注0
  • 积分18分
  • 威望2点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
地板#
发布于:2003-08-19 09:26
为什么不先看看ddk的help文档呢?
不限容量的免费邮箱 www.k65.net
downloadw
驱动牛犊
驱动牛犊
  • 注册日期2003-06-30
  • 最后登录2016-01-07
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2003-08-19 09:36
DDK和IFS的文档我都开着的,不过实在太厚了,:P
我更多是看一些源码学习
downloadw
驱动牛犊
驱动牛犊
  • 注册日期2003-06-30
  • 最后登录2016-01-07
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2003-08-19 09:37
和我这个问题比较接近的内容在DDK的哪个目录呢?
大侠能不能指点一下,帮我缩小学习范围?
wowocock
VIP专家组
VIP专家组
  • 注册日期2002-04-08
  • 最后登录2016-01-09
  • 粉丝16
  • 关注2
  • 积分601分
  • 威望1651点
  • 贡献值1点
  • 好评度1227点
  • 原创分1分
  • 专家分0分
6楼#
发布于:2003-10-18 10:22
ExAcquireSpinLock( &gControlDeviceStateLock, &oldIrql );
……
ExReleaseSpinLock( &gControlDeviceStateLock, oldIrql );
只在多CPU下有用,在单CPU下只是把IRQL提升到DISPATCH_LEVEL,你可以反汇编NTOSKRNL中的代码看看.
花开了,然后又会凋零,星星是璀璨的,可那光芒也会消失。在这样 一瞬间,人降生了,笑者,哭着,战斗,伤害,喜悦,悲伤憎恶,爱。一切都只是刹那间的邂逅,而最后都要归入死亡的永眠
游客

返回顶部