chacker
驱动小牛
驱动小牛
  • 注册日期2002-11-22
  • 最后登录2007-11-15
  • 粉丝0
  • 关注0
  • 积分193分
  • 威望20点
  • 贡献值0点
  • 好评度17点
  • 原创分0分
  • 专家分0分
阅读:1622回复:3

请问_IO_STACK_LOCATION里的control是干什么用的?

楼主#
更多 发布于:2005-05-09 20:06
以下是某个程序片段:

.text:00013BF7 mov eax, [esi+60h] //Irp->CurrentStackLocation
.text:00013BFA sub eax, 24h //0x24 为 sizeof(IO_STACK_LOCATION)
.text:00013BFD mov edx, esi
.text:00013BFF mov dword ptr [eax+1Ch], offset loc_13522
.text:00013C06 mov [eax+20h], ebx
.text:00013C09 mov byte ptr [eax+3], 0E0h //问题就是这句


typedef struct _IO_STACK_LOCATION {
UCHAR MajorFunction;
UCHAR MinorFunction;
UCHAR Flags;
UCHAR Control;
.....
}

eax+3 就是control,我想问,\"E0\"代表的是什么意思呢?我在ifs里查不到这个Control代表是什么意思 ,thanks
chacker
驱动小牛
驱动小牛
  • 注册日期2002-11-22
  • 最后登录2007-11-15
  • 粉丝0
  • 关注0
  • 积分193分
  • 威望20点
  • 贡献值0点
  • 好评度17点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2005-05-11 17:27
懂了,谢谢上面两位高手
lifeship
驱动小牛
驱动小牛
  • 注册日期2002-10-18
  • 最后登录2005-07-19
  • 粉丝0
  • 关注0
  • 积分6分
  • 威望2点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2005-05-11 15:26
E0 = 0x20 | 0x40 | 0x80
表示不管irp完成取消或者是成功或者失败
都调用完成例程
杯汝前来,  老子今朝,  放荡形骸!  甚长年抱渴,  咽如焦釜,  于今喜醉,  气似奔雷!  慢说刘伶,  古今达者,  醉后何妨死便埋! 
bmyyyud
驱动老牛
驱动老牛
  • 注册日期2002-02-22
  • 最后登录2010-01-21
  • 粉丝0
  • 关注0
  • 积分1000分
  • 威望130点
  • 贡献值0点
  • 好评度106点
  • 原创分0分
  • 专家分0分
地板#
发布于:2005-05-10 16:54
这里是I/O Manager设置的一些标志,例如如果IRP是异步处理的,IoMarkIrpPending会设置SL_PENDING_RETURNED位,其它还有一些I/O Manager内部设置的Irp成功,失败,取消等位,但这些为保持跨平台性推荐I/O Manager内部使用,我们最好通过DDK中的函数使用
滚滚长江东逝水 浪花淘尽英雄 是非成败转头空 青山依旧在 几度夕阳红 白发渔樵江渚上 惯看秋月春风 一壶浊酒喜相逢 古今多少事 尽付笑谈中
游客

返回顶部